无法将卡方值转换为R中的数字列

  • 本文关键字:数字 转换 方值 r statistics
  • 更新时间 :
  • 英文 :


我已经为一个家庭作业项目工作了一段时间,现在我陷入了一个后勤问题。

我现在有一个列表,它返回10000个值,格式为:

[[10000]]
X-squared 
0.1867083 

(这是列表的第10000个值)

我真正想要的是只有卡方值,这样我就可以做一些事情,比如创建一个值的直方图。

有什么办法我能做到这一点吗?如果有必要,我可以从头开始重复测试。

我当前的代码是:

nsims = 10000
for (i in 1:nsims) {cancer.cells <- c(rep("M",24),rep("B",13))
malig[i] <- sum(sample(cancer.cells,21)=="M")}
benign = 21 - malig
rbenign = 13 - benign
rmalig = 24 - malig
for (i in 1:nsims) {test = cbind(c(rbenign[i],benign[i]),c(rmalig[i],malig[i]))
cancerchi[i] = chisq.test(test,correct=FALSE) }

它给了我所需要的一切,我只是不能对它进行后续分析,比如创建直方图。

谢谢你花时间读这篇文章!

我将根据@Dr.的建议提供答案。迈克。

CCD_ 1需要一个矢量作为输入。hist(cancerchi)不起作用的原因是cancerchi是一个列表,而不是向量。

有几种方法可以将列表中的cancerchi转换为hist可以使用的格式。这里有三种方法:

hist(as.data.frame(unlist(cancerchi)))

请注意,如果不重新分配cancerchi,它仍然是一个列表,不能直接传递给hist

# i.e
class(cancerchi)
hist(cancerchi) # will still give you an error

如果你重新分配,它可以是另一种类型的对象:

(class(cancerchi2 <- unlist(cancerchi)))
(class(cancerchi3 <- as.data.frame(unlist(cancerchi))))
# using the ldply function in the plyr package
library(plyr)
(class(cancerchi4 <- ldply(cancerchi)))

这些新对象可以直接传递给hist

hist(cancerchi2)
hist(cancerchi3[,1]) # specify column because cancerchi3 is a data frame, not a vector
hist(cancerchi4[,1]) # specify column because cancerchi4 is a data frame, not a vector

一些额外的信息:用于查看对象的其他有用命令包括strhist0。

最新更新