循环函数r的输出向量

时间:2015-11-28 22:12:19

标签: r loops vector resultset

我正在尝试创建一个循环的输出向量,其中包含每个循环的结果。

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

1 个答案:

答案 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
}

为了好玩,我计划了两种方法:

enter image description here