2013-06-04 36 views
0

我试图通过所有的数字在数据帧的列wilcox.test在R.通行证进入名单中的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。

+1

请包括样本数据和可重复的代码:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Thomas

+0

什么是'list'?你的数据框? – Thomas

回答

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) 
+0

列名称的工作。谢谢! :) – user2211355

1

如果list是你的数据帧,你可以用下面的获得为每列结果:

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

你得到一个错误,因为你的一列是不是一个数值变量。

+0

我尝试使用名称(列表)删除第一列。它没有改变任何东西,我仍然收到相同的错误信息。 – user2211355

+0

数据框数字中的所有列都是?看起来不是。找到那些不是数字的,并删除它们,然后这将工作。 – Thomas

相关问题