我正在運行中的R以下歸集任務作爲一個循環:運行跨多組循環
myData <- essuk[c(2,3,4,5,6,12)]
myDataImp <- matrix(0,dim(myData)[1],dim(myData)[2])
lower <- c(0)
upper <- c(Inf)
for (k in c(1:5))
{
gmm.fit1 <- gmm.tmvnorm(matrix(myData[,k],length(myData[,k]),1), lower=lower, upper=upper)
useMu <- matrix(gmm.fit1$coefficients[1],1,1)
useSigma <- matrix(gmm.fit1$coefficients[2],1,1)
replaceThese <- myData[,k]<=0
myDataImp[,k] <- myData[,k]
myDataImp[replaceThese,k] <- rtmvnorm(n=sum(replaceThese), c(useMu), c(useSigma), c(-Inf), c(0))
}
的步驟非常簡單
- 定義數據集和一個空的估算數據組。
- 對於1-5列,適合模型。
- 提取用於插補的模型估計值。
- 使用模型估計運行模型,並用插值數據集中的新值替換值< = 0。
但是,我想爲多個組單獨執行此操作,而不是完整示例。數據集中的第12列包含有關組成員資格的信息(整數範圍從1到72)。
我試過了幾個選項,包括用data_list <- split(myData, myData$V12)
分割數據幀,並使用lapply()
函數。然而,這並不工作,由於模型估計值是如何格式化:
Error in as.data.frame.default(data) :
cannot coerce class ""gmm"" to a data.frame
我也想過做一個嵌套循環的可能性,但我不知道怎麼會來完成。任何建議,非常感謝。
請提供可重現的essuk或myData示例。 – Djork