Я пытаюсь создать выходной вектор цикла, содержащий результат из каждого цикла.Выходной вектор функции цикла r
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
растет вектор в цикле плохая практика (как петли в г в целом). Почему бы не сделать 'out <- numeric (5)' then' out [i] <- sample (1: 100, 1) 'внутри цикла. Или, 'out <- sample (1: 100, 5, replace = TRUE)' – jeremycg
Спасибо за советы по циклам, хотя я получил проблему, что то, что я назвал функцией здесь (по соображениям простоты), на самом деле является моделирование множественных рандомизированных наборов данных для определения точности алгоритма (и я все еще новичок). Я буду читать здесь, на петлях в R, спасибо за упоминание! –
В способе, которым вы используете это (как вектор, а не матрицу), вы должны использовать 'c()' вместо 'cbind()'. ** Однако **, послушайте совет jeremycg о «растущем» объекте - он разрушает производительность и может сделать простой код длительным. – Gregor