双向表和R的卡方测试

问题描述:

我目前正在为学校的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列的名字,但不是*列本身。 –

没有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

这是行得通的,谢谢。 –

试试这个

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循环做列表中的元素 –