我正在尝试使用 R 中的 manova 函数进行多元方差分析。我的问题是我试图找到一种方法来传递因变量列表而无需手动输入它们,因为它们有很多而且它们有可怕的名字。我的数据在一个数据框中,其中“单位”是因变量(因子),其余列是各种数值响应变量。例如
unit C_pct Cln C_N_mol Cnmolln C_P_mol N_P_mol
1 C 48.22 3.88 53.92 3.99 3104.75 68.42
2 C 49.91 3.91 56.32 4.03 3454.53 62.04
3 C 50.75 3.93 56.96 4.04 3922.01 69.16
4 SH 50.72 3.93 46.58 3.84 2590.16 57.12
5 SH 51.06 3.93 43.27 3.77 2326.04 53.97
6 SH 48.62 3.88 40.97 3.71 2357.16 59.67
如果我将 manova 调用写为
fit <- manova(cbind(C_pct, Cln) ~ unit, data = plots)
它工作正常,但我希望能够传递一长串列而不用一一命名,比如
fit <- manova(cbind(colnames(plots[5:32])) ~ unit, data = plots)
或者
fit <- manove(cbind(plots[,5:32]) ~ unit, data = plots)
我得到错误
"Error in model.frame.default(formula = as.matrix(cbind(colnames(plots[5:32]))) ~ :
variable lengths differ (found for 'unit')
我确定这是因为我使用 cbind 错误,但无法弄清楚。任何帮助表示赞赏!抱歉,如果格式很粗糙,这是我发布的第一个问题。
编辑:两种方式(实际上都是 3 种方式)都有效。谢谢大家!