如何用corstarsl()函数实现干净的相关表输出?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用corstarsl()函数实现干净的相关表输出?相关的知识,希望对你有一定的参考价值。
有一个很好的相关表函数around(我知道的唯一一个对眼睛产生这种特殊的熟悉度)。 Bertold已经修改了代码以获得更好的输出。但是,有情况e。 G。当输出看起来有些混乱时,w /负相关。
在下面我首先显示函数,并在最小的示例下面显示:
corstarsl <- function(x){
# corstars1() computes a correlation matrix w/ significance stars
require(Hmisc)
x <- as.matrix(x)
R <- rcorr(x)$r
p <- rcorr(x)$P
## define significance levels
mystars <- ifelse(p < .001, "***",
ifelse(p < .01, "** ",
ifelse(p < .05, "* ", " ")))
## correlation matrix w/ two digits
R <- format(round(cbind(rep(- 1.11, ncol(x)), R), 2))[, -1]
## build a new matrix that includes the correlations w/ appropriate stars
Rnew <- matrix(paste(R, mystars, sep = ""), ncol = ncol(x))
diag(Rnew) <- paste(diag(R), " ", sep = "")
rownames(Rnew) <- colnames(x)
colnames(Rnew) <- paste(colnames(x), "", sep = "")
## remove upper triangle
Rnew <- as.matrix(Rnew)
Rnew[upper.tri(Rnew, diag = TRUE)] <- ""
Rnew <- as.data.frame(Rnew)
## remove last column and return the matrix (which is now a data frame)
Rnew <- cbind(Rnew[1:length(Rnew) - 1])
return(Rnew)
}
例:
library(MASS)
n <- 100
mymeans <- c(10, 12, 15, 17) # means of each var
Sigma <- matrix(c(1, -.45, .16, -.71,
-.45, 1, -.71, .09,
.16, -.71, 1, -.17,
-.71, .09, -.17, 1), ncol = 4)
dat <- mvrnorm(n = n, mu = mymeans, Sigma, empirical = TRUE)
(cortab <- corstarsl(as.data.frame(dat)))
## V1 V2 V3
## V1
## V2 -0.45***
## V3 0.16 -0.71***
## V4 -0.71*** 0.09 -0.17
# or with htmlTable():
library(htmlTable)
htmlTable(cortab,
align = paste(rep('l', ncol(cortab)), collapse = ''))
输出中断:
预期产量:
有谁知道如何在函数内实现更好的结果格式化(小数点应该对齐)?
答案
您可以使用tableHTML
并使用widths
参数来控制列的宽度。此外,你需要使用
这个空间的html字符,如下所示:
#convert to character
cortab[] <- lapply(cortab, as.character)
#if the cell does not start with a minus add an html space
cortab[] <- lapply(cortab, function(x) {
ifelse(!startsWith(x, '-'), paste0(' ', x), x)
})
#convert to html with tableHTML
#control the column widths with the widths argument
library(tableHTML)
tableHTML(cortab, widths = c(40, 60, 60, 60), theme = 'scientific') %>%
add_css_column(list('text-align', 'left !important'), columns = 1:4)
以上是关于如何用corstarsl()函数实现干净的相关表输出?的主要内容,如果未能解决你的问题,请参考以下文章