我正在尝试传递数据帧列中的所有数字,以便使用R中的wilcox.test(·)
进行分析。
如果我通过c(1,2,3)
它工作得很好,但我想将一个预先存在的数据库中的列传递给函数,而不是完全输入它。 (有大约200万行)
传递列会出错:'x' must be numeric.
(可以理解)
示例数据:
AA AC AD AE AF
0.6047619 NA -1.0000000 1.0059524 -1.000000
-0.2348790 NA 0.5812500 0.1294643 -1.000000
0.9523810 -1 -1.0000000 -1.0000000 -1.000000
使用的声明:
{print(wilcox.test(list, y = NULL, correct = TRUE, mu = 0, exact = NULL))}
错误讯息:
Error in wilcox.test.default(list, y = NULL, correct = TRUE, mu = 0, exact = NULL) :
'x' must be numeric
列表是数据帧的一列。从AA到0.9523810。
答案 0 :(得分:1)
如果list
是您的数据框,您可以使用以下内容获取每列的结果:
apply(list,2,wilcox.test, y = NULL, correct = TRUE, mu = 0, exact = NULL)
您收到错误,因为您的某个列不是数字变量。
答案 1 :(得分:1)
要在名为df
的数据框中指定给定列,您可以使用以下方法之一:
df[1, ] # by number: first column
df["x1", ] # by name: column that is named "x1"
df$x1 # also by name
所以在这种情况下,你会使用(如果你想要名为“AA”的列)
wilcox.test(df$AA, y=NULL, correct=TRUE, mu=0, exact=NULL)