Я не совсем уверен, что вы пытаетесь сделать, так что дайте мне знать, если это это то, что y Оуре ищет.
q = 55
value <- c(sd95=0.95, sd99=0.99, sd995=0.995)
a = sapply(value, function(v) {
rnorm(q, 1:q, v)
})
В приведенном выше коде мы избегаем внутреннего цикла путем векторизации. Например, rnorm(55, 1:55, 0.95)
даст вам 55 случайных нормальных девиаций, первый из которых будет выбран из распределения со средним значением = 1, второй из распределения со средним значением = 2 и т. Д. Кроме того, вам не нужно инициализировать a
.
sapply
занимает место внешнего контура. Он применяет функцию к каждому значению в value
и возвращает три вектора случайных ничьих в качестве кадра данных a
. Я добавил имена к значениям в value
, а sapply
использует их как имена столбцов в результирующем фрейме данных a
. (Было бы больше стандарта, чтобы сделать value
список, а не вектор названными элементами. Вы можете сделать это с value <- list(sd95=0.95, sd99=0.99, sd995=0.995)
и код будет иначе работать так же.)
Вы можете создать кадры несколько данных и хранить их в список выглядит следующим образом:
q <- list(a=10, b=20)
value <- list(sd95=0.95, sd99=0.99, sd995=0.995)
df.list = sapply(q, function(i) {
sapply(value, function(v) {
rnorm(i, 1:i, v)
})
})
на этот раз мы имеем два различных значения для q
и мы обернуть sapply
код сверху внутри другого вызова sapply
. Внутренний sapply
делает то же самое, что и раньше, но теперь он получает значение q
от внешнего sapply
(используя переменную макета i
). Мы создаем два кадра данных: один - a
, а другой - b
. a
имеет 10 строк и b
имеет 20 (из-за значений, которые мы установили в q
). Оба кадра данных хранятся в списке с именем df.list
.
Я думаю, что непонятно, что вы ищете. Во-первых, 'value' не содержит' levels', поэтому, пожалуйста, будьте осторожны с используемой вами терминологией. Во-вторых, вы вообще не используете data.frames. В-третьих, если вы просто хотите применить функцию к элементам 'a' и' b', вы можете использовать 'sapply'. – iled
Извините за значение по сравнению с уровнями, я составил его, а затем понял, что R использует уровни в качестве ключевого слова и пытался его изменить. –
Я использовал rnorm (1, i, значение [j]) в качестве заполнителя для более сложного набора вычислений, которые не являются (imho) применимыми к этому вопросу. То, что я пытаюсь достичь, - это создать объект, который будет содержать данные для всех трех наборов данных рассчитанных значений. Этот объект будет передан в функции отчетности для создания графиков, в которых я нуждаюсь. –