R 中的 replicate()函数
replicate()
函数可用于创建模拟,因为它可以重复一个表达式的特定次数。我们还可以使用 simplify
参数控制最终结果的类型为数组或列表。
下面是 replicate()
函数的一个简单例子。
replicate(5,1)
[1] 1 1 1 1 1
在上面的例子中,你可以看到,1
是重复 5 次的表达式。注意,这里的最终结果是一个数组。如果我们在函数中加入 simplify
参数(默认为 True
),并将其设置为 False
,我们将得到一个列表而不是一个数组。比如说,我们可以使用 “简化 “参数。
typeof(replicate(5,1,simplify = FALSE))
[1] "list"
我们也可以使用 replicate()
进行更复杂的模拟,比如创建一个二维数组。下面的代码片段将展示我们如何做。
replicate(5, seq(1,10,1))
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 2 2 2 2 2
[3,] 3 3 3 3 3
[4,] 4 4 4 4 4
[5,] 5 5 5 5 5
[6,] 6 6 6 6 6
[7,] 7 7 7 7 7
[8,] 8 8 8 8 8
[9,] 9 9 9 9 9
[10,] 10 10 10 10 10
在这个例子中,我们使用 seq()
函数来创建一个简单的序列。replicate()
重复 5 次序列,生成一个二维数组。
我们也可以使用 for()
循环来处理这种情况。例如:
n <- numeric(5)
arr2d <- replicate(5, {
for(i in 1:5){n[i] <- print(i)};n} )
print(arr2d)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 2 2 2 2 2
[3,] 3 3 3 3 3
[4,] 4 4 4 4 4
[5,] 5 5 5 5 5
请注意
,我们必须在大括号外使用一个数字向量作为额外的语句;否则,replicate()
函数将得到 NULL 值,因为该值会被作为垃圾转储,而且不会被存储,因为我们使用的是for()
循环。
arr2d <- replicate(5, {
for(i in 1:5){print(i)}} )
print(arr2d)
输出:
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
相关文章
R 中具有多个条件的函数向量化
发布时间:2023/03/21 浏览次数:64 分类:编程语言
-
一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更
在 R 中读取 xlsx 文件
发布时间:2023/03/21 浏览次数:66 分类:编程语言
-
在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。