我有一個公式可以創建矩陣。後來,每集中的一個矩陣我都要做一些耗時的事情。到目前爲止,我將這些矩陣綁定到一個列表中,其中lapply()
。現在,我假設用一組矩陣運算會快得多。事情是,我不知道如何讓這些matrrices生成一個數組,如lapply()
。如何直接生成矩陣到具有函數的數組中?
我給你這個例子:
# matrix generating function
mxSim <- function(X, n) {
mx = matrix(NA, nrow = n, ncol = 3,
dimnames = list(NULL, c("d", "alpha", "beta")))
mx[,1] = rbinom(n, 1, .375)
mx[,2] = rnorm(n, 0, 2)
mx[,3] = .42 * rnorm(n, 0, 6)
return(mx)
}
# bundle matrices together
mx.lst <- lapply(1:1e1, mxSim, n = 1e4)
# some stuff to be done after, like e. g.:
lapply(mx.lst, function(m) lm(d ~ alpha + beta, as.data.frame(m)))
任何人可以給我一些建議如何與一個數組做到這一點?
我一直在尋找到this答案,但它的矩陣必須已經生成了,我只能再次上市前他們幫助我。
我也不知道......但我會建議你去並行(包'snowfall'和/或'foreach') –
我不知道我是否同意你的假設,即一組矩陣比矩陣列表更快。如果您將一個函數應用於一組矩陣中的每個矩陣,則可以直接在列表中引入parralelization。對陣列做這樣的操作*要困難得多。 – SeldomSeenSlim
我認爲它與data.frames是一樣的 - 因爲所有東西都是數字的,並且具有相同的維度,所以我使用了矩陣。現在我有所有相同尺寸的矩陣,並再次使用列表(我認爲它有點3D數據框架)。 – jaySf