R For Loop无法存储数据

时间:2011-12-12 13:26:32

标签: r loops for-loop storage

这可能是一个非常简单的问题,但我对R来说很新。我有一个for循环,

holder<-rep(0,3)
for(i in 1:3) {
  apple<-c(i+1, i*2, i^3)
  holder[i]<-apple
}

我收到警告信息:

Warning messages:
1: In holder[i] <- apple :
  number of items to replace is not a multiple of replacement length
2: In holder[i] <- apple :
  number of items to replace is not a multiple of replacement length
3: In holder[i] <- apple :
 number of items to replace is not a multiple of replacement length

所以我试着做的是将holder设置为矩阵,而不是向量。但我无法完成它。任何建议都将不胜感激。

最佳,

詹姆斯

2 个答案:

答案 0 :(得分:3)

要么将其作为矩阵使用:

holder<-matrix(0,nrow=3,ncol=3)
for(i in 1:3){
    apple<-c(i+1, i*2, i^3)
    holder[,i]<-apple  # columnwise, that's how sapply does it too
}

或者您使用列表:

holder <- vector('list',3)
for(i in 1:3){
    apple<-c(i+1, i*2, i^3)
    holder[[i]]<-apple
}

或者你只是按照R方式进行:

holder <- sapply(1:3,function(i) c(i+1, i*2,i^3))
holder.list <- sapply(1:3,function(i) c(i+1, i*2,i^3),simplify=FALSE)

旁注:如果你在R中遇到这个非常基本的问题,我强烈建议你浏览一下你在网上找到的任何介绍。你可以在以下网址找到它们的清单:

Where can I find useful R tutorials with various implementations?

答案 1 :(得分:2)

您应该制作正确尺寸的矩阵,然后填充值。还记得在i后面放一个逗号,这样就可以正确地索引矩阵了。

holder<-matrix(nrow = 3, ncol = 3)

for(i in 1:3)

{

  apple<-c(i+1, i*2, i^3)

  holder[i,]<-apple

}