2017-09-13 22 views
0

我目前正在爲學校的R項目工作。我有一個關於這個項目的問題。我必須打印雙向表格,並且我的表格的每個單元格都應該包含卡方檢驗的結果。雙向表和R的卡方測試

例如:

My two-ways table

例如,0.7是橙色和蘋果卡方檢驗的結果。

我知道該怎麼做兩個變量之間的卡方檢驗:

chisq.test(c(data_frame$Apple, data_frame$Orange)) 

然後我試圖打印雙向表:

list <- c("Apple", "Orange", "Grappe") 
for (element in list) { 
    for (element2 in list) { 
     chisq.test(c(data_frame$element, data_frame$element2)) 
    } 
} 

但它不工作,我有一個無限循環。

有人可以幫我解決這個問題嗎?我是新至R 此外,對不起我的英語

+0

使用'data_frame [[element]]'和'element2'也是相同的。你也沒有分配測試結果。而且我看到了更糟糕的英語。 –

+0

Hello Rui Barradas,你想讓我用data_frame [element] $ element替換data_frame $ element嗎? –

+0

不!用我寫的'data_frame [[element]]'替換'data_frame $ element'。不同之處在於'element'是一個字符串,它包含一個df列的名字,但不是*列本身。 –

回答

1

沒有seing data_frame這是不可能知道下面的代碼你想要做什麼,但在這裏不言而喻。
首先,我已經將載體的名稱更改爲mylist,因爲list是一個R函數。

mylist <- c("Apple", "Orange", "Grappe") 

pval <- lapply(mylist, function(x){ 
    lapply(mylist, function(y){ 
     if(x != y) { 
      chisq.test(data_frame[[x]], data_frame[[y]])$p.value 
     } 
    }) 
}) 
pval 

這隻會產生p值,如果你想要的chisq.test全力輸出,你會用

result <- lapply(mylist, function(x){ 
    lapply(mylist, function(y){ 
     if(x != y) { 
      chisq.test(data_frame[[x]], data_frame[[y]]) 
     } 
    }) 
}) 

這將產生清單的嵌套列表,每個嵌套列表的元素是類htest的對象,通過R中的假設測試返回的對象。

+0

這是行得通的,謝謝。 –

0

試試這個

list <- c("Apple", "Orange", "Grappe") 
while (element in list) { 
    while (element2 in list) { 
     chisq.test(c(data_frame$element, data_frame$element2)) 
    } 
} 
+0

您的代碼在語法上不正確。 –

+0

我們不能用while循環做列表中的元素 –