Как создать последовательно упорядоченный список в R с lapply и реплицировать? - PullRequest
0 голосов
/ 17 мая 2018

Я пытался избежать циклов в R.Однако у меня были проблемы с использованием lapply с replicate в том смысле, что списки, которые я получаю, имеют порядок, который не является последовательным.Например, следующий код:

lapply(1:5, function(x) replicate(100, rnorm(x), simplify = F))

создает по 100 экземпляров каждого: rnorm(1), rnorm(2), ..., rnorm(5).

Это намного быстрее, чем использование цикла for.Тем не менее, я получаю следующие индексы списка:

.........
[[5]][[98]]
[1] -0.87686000 -0.82373642 -0.05671333 -2.24652788 -1.43497760

[[5]][[99]]
[1] -1.6935926  0.4753606  0.1190997  0.1464246  0.8604974

[[5]][[100]]
[1]  0.68414921  0.32183115  1.23681540 -1.34076190 -0.08467215

, в то время как я хочу:

[[1]] -0.87686000
[[2]] -0.8237
......
[[500]] 1.236

Есть ли способ изменить приведенный выше код так, чтобы он упорядочивал список изОт 1 до 500?Спасибо!

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете просто позвонить unlist() для результата, например:

unlist(lapply(1:5, function(x) replicate(100, rnorm(x))))

Хотя учтите, что вы получите атомный вектор длины 1500 - так как выГенерация 1 + 2 + 3 + 4 + 5 = 15 случайных значений 100 раз.

Это то, к чему вы стремитесь?

Если цель состоит в том, чтобы получить 500 итоговых значений, где среднее значение изменяется от 1 до 5 в каждой итерации, тогда вы можете просто сказать:

unlist(lapply(1:5, function(x) replicate(100, rnorm(1, mean=x))))

Вы можете увидеть восходящий тренд сНапример:

values <- unlist(lapply(1:5, function(x) replicate(100, rnorm(1, mean=x))))
plot(seq_along(values), values)

enter image description here

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