2013-06-04 33 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

相關問題