我花了几个小时试图解决这个问题,尽管没有成功。我有一百多个结果变量,我正试图估计它们的平均值。当单独计算时(即,不是以循环或矢量化的形式(,我得到了正确的估计。一旦我使用lapply或类似的代码,我得到的估计值就会略有不同。
以下是给出正确答案的独立代码:
prop.table(table(x$polytobacco))
mean(x$polytobacco, na.rm = T)
然而,以下是给出错误估计的应用声明:
varlist = c("polytobacco, ....") # over 100 variables
meanestimates = as.matrix(round(sapply(y[,varlist], function(x) mean(as.numeric(x), na.rm = T)), 1)) %>% as.data.frame() %>% t
提前谢谢。
Ter。
我想,少即是多。我简化了代码,现在给出了正确的结果。
#总体
pooledov = lapply(x[,outcomes], function(x) mean(x, na.rm = T)) %>% as.data.frame()
rownames(pooledov) = "Total"
colnames(pooledov) = outcomes
>#亚组分析
means = foreach(o = outcomes) %:%
foreach (p = predictors) %do% {
tapply(x[,o], x[,p], mean, na.rm =T) %>% as.data.frame()
}