2013-08-14 5 views
0

Я хотел бы сгенерировать набор с растущим числом некоторых представителей. В финале мне нужна матрица или data.frame, состоящая из 100 строк, содержащих i номер представителя (в примере это 1). Но есть следующая ошибка. Что это за трюк? Что мне не хватает?R: Генерация искусственного набора

Error: no function to return from, jumping to top level 

for(i in 1:100) { 
    x <- c(rep(1,i),rep(100000,(2500-i))) 
    return(x) 
} 

Большое спасибо!

ответ

1

В функции можно использовать только return. Одним из решений является создание матрицы для хранения результатов, например:

R> m = matrix(0, ncol=100, nrow=2500) 
R> 
R> for(i in 1:100) { 
+ m[,i] = c(rep(1, i), rep(100000, (2500-i))) 
+ } 

должен сделать трюк. Или с помощью sapply функции:

m1 = sapply(1:100, function(i) c(rep(1, i), rep(100000,(2500-i)))) 

Для получения информации, ваша функция респ также может быть упрощена:

rep(c(1, 1000000), c(i, 2500-i)) 
+0

спасибо! Мне очень нравится версия sapply! –

Смежные вопросы