我已经为一个家庭作业项目工作了一段时间,现在我陷入了一个后勤问题。
我现在有一个列表,它返回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
一些额外的信息:用于查看对象的其他有用命令包括str
和hist
0。