2017-01-19 4 views
1

Я учусь R и я хотел бы сделать «массив массивов» (не уверен, если выражение является правильным) вставляя, например, эти значенияМассив массивов различных размеров

N_seq = c(10,50,100,500,1000) 

внутри эта функция (не правильно):

x = rnorm(N_seq,3.2,1) 

желаемый результат должен быть подобен объекту, сделанному пять массивов (как length(N_seq) = 5), где каждый из них равен результату x вставки каждого значения N_seq (так что x[1] есть значения rnorm(N_seq[i], 3.2, 1) с длиной 10 и x[2] имеет значения rnorm(N_seq[2], 3.2, 1) с длиной 50 и т. Д.

ответ

1

Для оборванной решетки используйте "list". Это особый тип «вектора» в R. Вы можете не только удерживать векторы разностной длины в каждом элементе списка, но и разные типы объектов для каждого элемента списка.

Функция lapply для «применения списка» часто используется для обработки списка и/или возврата списка. Для вашей задачи, вы можете сделать:

lapply(N_seq, FUN = rnorm, mean = 3.2, sd = 1) 

lapply применяет функцию FUN каждого вектор элементы N_seq, где mean = 3.2 и sd = 1 являются дополнительными параметрами, передаваемых в FUN, который является rnorm здесь.

+0

Привет, я пытался, например, чтобы установить семя, но я получить различные результаты: set.seed (42) N_seq = с (10,50,100,500,1000) а = RNorm (10,3.2,1) б = lapply (N_seq, FUN = rnorm, mean = 3.2, sd = 1) print (a) print (b [1]) –

+0

Я знал, что для установки семени числа всегда должны быть одинаковыми –

+0

Отлично! Я не знал этого, есть ли способ установить только один раз семя, чтобы я не инициализировал его каждый раз? –

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