是否有办法以与制作绘图相同的方式(即使用pdf()或ggsave())从R生成表格的PDF?我意识到有其他程序的方法(使用sweave等),但我想从R中生成它。
答案 0 :(得分:30)
是的,因为您可以将文本放入图表中,因此放入pdf设备。
最好的包装器可能是Greg Warnes的受信任gplots包中的textplot()
函数。以下是其帮助页面的示例部分的开头:
# show R version information
textplot(version)
# show the alphabet as a single string
textplot( paste(letters[1:26], collapse=" ") )
# show the alphabet as a matrix
textplot( matrix(letters[1:26], ncol=2))
### Make a nice 4 way display with two plots and two text summaries
data(iris)
par(mfrow=c(2,2))
plot( Sepal.Length ~ Species, data=iris, border="blue", col="cyan",
main="Boxplot of Sepal Length by Species" )
plotmeans(Sepal.Length ~ Species, data=iris, barwidth=2, connect=FALSE,
main="Means and 95\% Confidence Intervals\nof Sepal Length by Species")
info <- sapply(split(iris$Sepal.Length, iris$Species),
function(x) round(c(Mean=mean(x), SD=sd(x), N=gdata::nobs(x)),2))
textplot( info, valign="top" )
title("Sepal Length by Species")
reg <- lm( Sepal.Length ~ Species, data=iris )
textplot( capture.output(summary(reg)), valign="top")
title("Regression of Sepal Length by Species")
par(mfrow=c(1,1))
答案 1 :(得分:14)
请参阅grid.table
中的gridExtra
,使用网格图形。
答案 2 :(得分:4)
plotrix包中还有addtable2plot函数。
答案 3 :(得分:4)
我最近想要这样做,但不喜欢grideExtra
或textplot
的输出格式,所以我写了这个函数来做乳胶。这是一个黑客工作,sweave
或knitr
有更好的方法,但您可能会发现根据您的目的进行修改很有用:
createPDF <- function(xx, name=deparse(substitute(xx))){
require(xtable)
tt <- print(xtable(xx), type='latex')
texfile <- paste0('./reports/', name, '.tex')
cat(
'\\documentclass[12pt]{report}
\\usepackage[landscape]{geometry}
\\date{}
\\begin{document}', tt, '\\end{document}', sep='',
file=texfile
)
## pdflatex from texlive package for linux converts .tex to .pdf
system(paste0('pdflatex ', '-output-directory ./reports ', texfile))
}
答案 4 :(得分:0)
这是我图书馆的一线客:
library(huxtable)
my_table <- table(mtcars$gear, mtcars$cyl)
quick_pdf(my_table) # produces a PDF in the current directory