通过Hmisc ::胶乳一个迷幻对象上印刷控制数字(control digits printed b

2019-10-24 07:47发布

我已经产生相关性的比较使用迷幻:: cortest.mat矩阵。 我想将输出一个Sweave文件进行生产与knitr。 当我使用Hmisc ::乳胶()函数,它的工作原理,但它也产生约7位数为每个结果,这使得它真的没有吸引力。 我可以只产生具有knitr内的标记参数的输出,但我的文档中的所有其他表更有效地与乳胶输出产生(结果=“ASIS”)。

思考?

#Sample data
variable1<-rnorm(100, mean=7, sd=1)
variable2<-rnorm(100, mean=4, sd=1)
variable3<-rnorm(100, mean=6, sd=1)
variable4<-rnorm(100, mean=8, sd=2)
variable5<-rnorm(100, mean=9, sd=1)
variable6<-rnorm(100, mean=7, sd=3)
#Correlation matrices
cor.mat1<-cor(data.frame(variable1, variable2, variable3))
cor.mat2<-cor(data.frame(variable4, variable5, variable6))
library(psych)
library(Hmisc)
#Compare matrices
cor.comparison<-cortest.mat(cor.mat1, cor.mat2, n1=100, n2=100)
#try to print
latex(cor.comparison, file='')
#try unclassing
test<-unclass(cor.comparison)
#Try with lapply
lapply(test, function(x) round(x,2))
#try also changing options(digits=)
options(digits=3)
latex(cor.comparison, file='')

Answer 1:

所述cor.comparison对象是类的迷幻'和“CORTEST公司”的。 没有print.cortest方法,但有一个print.psych方法,它是巨大的。 这显然是为了hadle所有兴田不同类型的对象,它出现在CORTEST公司的印刷方法是这样的代码:

 cortest = {
    cat("Tests of correlation matrices \n")
    cat("Call:")
    print(x$Call)
    cat(" Chi Square value", round(x$chi, digits), " with df = ", 
        x$df, "  with probability <", signif(x$p, digits), 
        "\n")
    if (!is.null(x$z)) cat("z of differences = ", round(x$z, 
        digits), "\n")

所以,你可能会更好过简单地靶向在该对象的项目,而不是试图用“鸟枪”与lapply。

> str(cor.comparison)
List of 5
 $ chi2 : num 8.68
 $ prob : num 0.192
 $ df   : num 6
 $ n.obs: num 100
 $ Call : language cortest.mat(R1 = cor.mat1, R2 = cor.mat2, n1 = 100, n2 = 100)
 - attr(*, "class")= chr [1:2] "psych" "cortest"

所以刚轮卡方和概率值:

cor.comparison<-cortest.mat(cor.mat1, cor.mat2, n1=100, n2=100)
cor.comparison[c('chi2', 'prob')] <- lapply( cor.comparison[c('chi2', 'prob')], round, 2)
latex(cor.comparison, file='')


文章来源: control digits printed by Hmisc::latex on a psych object