这可能是一个非常简单的问题,但我对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设置为矩阵,而不是向量。但我无法完成它。任何建议都将不胜感激。
最佳,
詹姆斯
答案 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
}