将列表传递到R中的wilcox.test

时间:2013-06-04 14:07:02

标签: database r statistics

我正在尝试传递数据帧列中的所有数字,以便使用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。

2 个答案:

答案 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)