R Для цикла не удается сохранить данные - PullRequest
3 голосов
/ 12 декабря 2011

Это, вероятно, довольно простая проблема, но я плохо знаком с 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

Так чтоЯ попытался сделать это установить держатель в качестве матрицы, а не вектор.Но я не могу завершить это.Любые предложения будут с благодарностью.

Лучший,

Джеймс

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

либо вы работаете с ней как с матрицей:

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, я настоятельно рекомендую вам просмотреть любое из введений, которые вы найдете в Интернете. Вы получите их список по адресу:

Где я могу найти полезные руководства R с различными реализациями?

2 голосов
/ 12 декабря 2011

Вы должны составить матрицу правильных размеров и затем заполнить их значениями. Также не забудьте поставить запятую после i, чтобы правильно индексировать матрицу.

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

for(i in 1:3)

{

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

  holder[i,]<-apple

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...