我有一个数据框,包含52个变量的526个观测值。这些观察来自两个独立的来源,所有数据都是非正态分布的。因此,我想对所有83个变量进行Wilcoxon秩和检验,以比较两个来源。但是,我无法弄清楚如何制作一个函数来逐步完成每个变量。我的第一个想法是使用for循环来逐步调试变量,用它的数字调用每一列。
如果我使用数字来指定列,我也没有遇到任何问题。但是,如果我使用变量,我会收到一条错误消息。例如,以下工作可以很好地在我的数据框的第11列执行Wilcoxon测试:
model<-wilcox.test(pool[ , 11] ~ group, data = pool, paired = FALSE)
model
但是,以下内容会返回错误
i <- 11
model<-wilcox.test(pool[ , i] ~ group, data = pool, paired = FALSE)
model
我得到的错误是:
model.frame.default中的错误(formula = pool [,i] ~Church,data = pool): 变量&#39; pool [,i]&#39;
的类型(列表)无效显然,我错过了一些关键概念,但我现在可能会感到茫然。
答案 0 :(得分:1)
您可以像这样构建公式:
modelList<-list()
for(i in 1:83){
fmla <- formula(paste(names(pool)[i], " ~ group"))
modelList[[i]]<-wilcox.test(fmla, data = pool, paired = FALSE)
}
这种方法的优点是模型对象将包含变量名称,这使得识别哪些变量与哪些统计信息更容易匹配。