0

我正在尝试传递要wilcox.test(·)在 R中使用的数据框列中的所有数字。

如果我通过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。

4

2 回答 2

1

如果list是您的数据框,您可以使用以下内容获取每列的结果:

apply(list,2,wilcox.test, y = NULL, correct = TRUE, mu = 0, exact = NULL)

您收到错误,因为您的列之一不是数字变量。

于 2013-06-04T14:21:03.787 回答
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)
于 2013-06-04T14:27:01.573 回答