【发布时间】:2014-04-12 11:09:15
【问题描述】:
我正在尝试创建 10 个向量,每个向量中有 10 个值,并且值应该具有正态分布。向量应该是 v1, v2, v3 ...
我尝试了 for 循环,但语法:
for(i in 1:10) {
v[i] <- rnorm(10)
}
没用。我尝试了很多品种,但没有结果,也没有在网上找到任何解决方案。
【问题讨论】:
我正在尝试创建 10 个向量,每个向量中有 10 个值,并且值应该具有正态分布。向量应该是 v1, v2, v3 ...
我尝试了 for 循环,但语法:
for(i in 1:10) {
v[i] <- rnorm(10)
}
没用。我尝试了很多品种,但没有结果,也没有在网上找到任何解决方案。
【问题讨论】:
创建大量“松散”向量并不是一个好主意。最好以合适的形式收集它们,例如在matrix、list 或data.frame(list 的一种)中。然后,您可以通过各种子集技术访问各个元素(请参阅 ?Extract 和 here。
在您的情况下,您可以尝试例如replicate:
m <- replicate(n = 10, expr = rnorm(10))
m
这将产生一个包含n 列的矩阵,其中每一列都是expr 的结果,即rnorm(10)。
【讨论】:
在R 中没有向量向量。您可以在matrix 或异构数据结构(如list)上使用二维模拟
更多详情见:http://adv-r.had.co.nz/Data-structures.html
matrix 方法是:
matrix(rnorm(100),nrow=10)
list 方法是:
lapply(1 : 10, function (i) rnorm(10))
【讨论】:
向量通常不能嵌套(即你不能有向量的向量)。 R 有一个特殊的形式——list。
v = lapply(1 : 10, function (i) rnorm(10))
通常,您希望将其表示为 data.frame,但是:
setNames(data.frame(v), NULL)
(setNames 用于删除 R 自动生成的坏列名。)
【讨论】: