如何解决如何将mvn测试的结果放在R的表中?
我正在测试Iris数据集中的多元正态性。 我想比较MVN软件包下所有不同测试的结果(Mardia的测试,Henze-Zikler,Royston,Doornik-Hansen和Energy的测试),并完成了以下代码:
chrome.windows.getLastFocused(w => {
chrome.extension.getViews({type: 'popup',windowId: w.id}).forEach(v => v.close());
});
我必须以一种易于呈现在我的发现中的方式来获得结果。 我需要三个表(每个物种一个表),这些表汇总了上面输出的数据。 本质上,对于每个表,行是不同的测试,列是测试统计值,P值和mvn结果。我尝试了以下
library(MVN)
library(htmlTable)
attach(iris)
#Mardia's Test
Mar<-MVN::mvn(data=iris,subset="Species",mvnTest="mardia")
Mar$multivariatenormality
#Henze-Zirkler's Test
Hz<-MVN::mvn(data=iris,mvnTest="hz")
Hz$multivariatenormality
#Royston's Test
Roy<-MVN::mvn(data=iris,mvnTest="royston")
Roy$multivariatenormality
#Doornik-Hansen Test
Dh<-MVN::mvn(data=iris,mvnTest="dh")
Dh$multivariatenormality
但是,我收到此错误
table <- rbind(Mar$multivariatenormality$setosa[1:2,],Hz$multivariatenormality$setosa[1:2,Roy$multivariatenormality$setosa[1:2,])
htmlTable(table,caption="Testing")
解决方法
“表”实际上是数据帧(每列都是一个因子变量)。为了使它们更易于处理,最好将所有结果放入列表中。然后,我们可以将所有数据帧转换为字符矩阵,确保列名匹配,然后将它们绑定在一起:
tablist <- lapply(list(Mar,Hz,Roy),`[[`,"multivariateNormality")
tablist <- lapply(tablist,function(x)
lapply(x,function(y) {
y <- `colnames<-`(as.matrix(y),c("Test","Statistic","p value","MVN"))
y[,2] <- round(as.numeric(y[,2]),2)
y[,3] <- round(as.numeric(y[,3]),2)
y
}))
setosa <- as.data.frame(do.call(rbind,lapply(tablist,"setosa")))
versicolor <- as.data.frame(do.call(rbind,"versicolor")))
virginica <- as.data.frame(do.call(rbind,"virginica")))
htmlTable(setosa,caption = "Setosa")
htmlTable(versicolor,caption = "Versicolor")
htmlTable(virginica,caption = "Virginica")
哪个给:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。