【发布时间】:2014-02-03 21:05:20
【问题描述】:
我有一个向量列表,对于列表中的每个向量,我想提取元素并将它们的值用作函数中的参数。以下是我迄今为止提出的总体思路。
#Function to convert parametric values (stored in vector) to multivariate normal random data
ParamsToDat = function(X){
vec = X
MultN = rmvnorm(vec[4],c(vec[2],vec[3],matrix(c(vec[5],vec[1],vec[1],vec[6]), 2, 2, byrow = FALSE)))
return(MultN)
}
# Create list of randomly generated matrices based on parameters
GenData = function(MeanPre,MeanPost,Cov,SampSize,SampSD,IndVar1,IndVar2){
#Use GenParams function to generate list of vectors each of length 6
Params = GenParams(MeanPre,MeanPost,Cov,SampSize,SampSD,IndVar1,IndVar2)
#Use lapply function to create list of matrices of multivariate normal data
MatList = lapply(X = Params, FUN = ParamsToDat)
MultN = list(Matlist = Matlist, Params = Params)
return(MultN)
}
列表 Params 中的每个元素都是一个长度为 6 的向量。我希望函数 ParamsToDat 提取列表中向量的元素并将它们用作参数来生成多元法线数据矩阵。此矩阵将替换从中派生值的向量。
很明显,我的 ParamsToDat 函数或 lapply 函数或两者都搞砸了,因为它不起作用。有什么想法我可以做到这一点吗?
【问题讨论】:
-
您应该提供reproducible example。这将使您更有可能得到答案。在这种情况下,您应该包含
library(mvtnorm)以及GenParams()函数、您遇到的错误,以及对您的GenData()函数的示例调用。