быстрая функция для генерации образцов начальной загрузки в матричных формах в R

У меня есть матрица A, и я хотел бы взять образцы из каждого столбца A и построить новые матрицы. Например:

A = matrix(seq(1,9),3,3)

поэтому, чтобы получить 1-ю бутстрап-матрицу, я бы взял образец с заменой (3 раза) из первого столбца A, т.е. 1,2,3, образец с заменой (3 раза) из второго столбца A, т.е. 4,5, 6, а образец с заменой (3 раза) из третьего столбца A, т.е. 7,8,9. После этого я реконструирую 1-ю бутстрап-матрицу B1, комбинируя три бутстрап-вектора. Я повторю эту процедуру для B=199 раз, чтобы были доступны бутстрап-матрицы B1,...,B199.

У меня вопрос, как я могу заставить эту программу работать быстрее? Какую функцию следует использовать? Я знаю, что apply включает по существу for циклов, поэтому скорость не гарантируется. Как насчет do.call? Спасибо!


person alittleboy    schedule 22.11.2012    source источник


Ответы (1)


Вы можете использовать replicate и apply:

A <- matrix(seq(1,9),3,3)

B <- 199

replicate(B, apply(A, 2, sample, replace = TRUE))
person Sven Hohenstein    schedule 22.11.2012
comment
спасибо, но использование sample заключается в пробе без замены. Здесь я надеюсь получить образец начальной загрузки, так как я могу передать replace=TRUE функции? - person alittleboy; 22.11.2012
comment
Я понял: replicate(B, apply(A, 2, function(s) sample(s,replace=TRUE))) будет работать :) - person alittleboy; 22.11.2012