我正在尝试创建一个循环的输出向量,其中包含每个循环的结果。
out=NULL
for (i in 1:5) {
out<-cbind(out,sample(1:100, 1)) #placeholderfunction
for (i in 1:5) {out[i]<- i+1}
}
好的一面:我的结果包含正确的值。坏的一面:它作为一个矩阵,我不知道为什么。
> out
out
[1,] 2 71 14 46 96
[2,] 3 71 14 46 96
[3,] 4 71 14 46 96
[4,] 5 71 14 46 96
[5,] 6 71 14 46 96
我想要的是:
> out
out
[1,] 2 71 14 46 96
可能这只是我站立的一小步,但我无法理解,也许有人可以提供帮助? (是的,我可以删除,但我希望我的代码清洁)
谢谢!
确定, 通过在这个尺度上再次查看问题我发现它 - 一条多余的线:
> out=NULL
> for (i in 1:5) {
+ out<-cbind(out,sample(1:100, 1))
+ }
> out
[,1] [,2] [,3] [,4] [,5]
[1,] 63 98 78 43 19
答案 0 :(得分:-1)
这个怎么样?
out <- sample(100,5)
更新
我明白为什么我得到-1,OP想要用for循环构造一个向量。需要注意的是,以这种方式创建矢量通常不是一个好主意。例如,我的上述代码比OP的代码更简单,更快。如果你想要生成带有for循环的随机数向量,可以使用这种方法
my.loop <- function(l){
out_1 <- numeric(l)
for (i in 1:l) {
out_1[i] <- sample(1:100, 1)
}
out_1
}
这将比下面的op方法好得多,因为我们正在预先分配内存。
op.loop <- function(l){
out_2 = NULL
for (i in 1:l) {
out_2 <- cbind(out_2, sample(1:100, 1))
}
out_2
}
为了好玩,我计划了两种方法: