在R中以.pdf格式打印输出数据(数据框/矩阵)和绘图

时间:2019-04-26 18:52:54

标签: r

我想打印我的R代码结果。 pdf文件中的几个数据帧(大约4-5个)和几个图(4个图),即我想使用一些代码集(我想最后运行)将所有输出导出到pdf文件中或在单独的文件中,即在母码/核心码/主要代码之外(例如使用rmarkdown::render("analysis.R", "pdf_document")。),我想实现:-

a。我只想打印输出(而不是代码)。为此,发现一些诸如#+echo=FALSE之类的命令很有用,我在我的母代码文件的开头使用/放置了这些命令,并运行以下命令(在外部文件中):-

library(rmarkdown) render("Analysis.R", output_format = "pdf_document", output_file = "Aalysis_Output",quiet = TRUE)

b。但是我的表没有被格式化,它们被分成许多表(因为它们有点宽,所以行名也被复制到每个表中,每个表只有一列-我总共有三列-所以我获得3张桌子)。

c。此外,我要删除的每行输出中都显示“ ##”。

还要注意,目前,我不想使用R Markdown或KnitR ...(因为我不希望R代码使用.Rmd文件等)。有什么方法可以轻松地做到这一点-就像我们在C编程中所使用的一样-我们打开一个文本文件,并开始使用fprinft等编写C的结果/输出。)

下面是我要打印在格式正确的pdf文件中的所有数据集(R数据帧)和图(我在R中使用ggplot创建图)。

## Printing all the results & plots ##

print(base_result, right = T)   # Base Results

print(DSA_AP, right = T)        # DSA for Drug A vs P
Torn_AP                         # Tornado for Drug A vs P

print(DSA_AQ, right = T)        # DSA for Drug A vs Q
Torn_AQ                         # Tornado for Drug A vs Q

print(DSA_AR, right = T)        # DSA for Drug A vs R
Torn_AR                         # Tornado for Drug A vs R

print(DSA_AS, right = T)        # DSA for Drug A vs S
Torn_AS                         # Tornado for Drug A vs S

我尝试了以下代码来获取结果:-

Set-1 Codes: Issue it’s not printing the tables/data-frames (but plotting all the plots only).

    pdf("MyOutput_12.pdf", paper = "A4")

    print(base_result, right = T)   # Base Results 
    # Issue: It is only coming as a print in the console and similarly for below tables.

    print(DSA_AP, right = T)        # DSA for Drug A vs P
    Torn_AP                         # Tornado for Drug A vs P

    print(DSA_AQ, right = T)        # DSA for Drug A vs Q
    Torn_AQ                         # Tornado for Drug A vs Q

    print(DSA_AR, right = T)        # DSA for Drug A vs R
    Torn_AR                         # Tornado for Drug A vs R

    print(DSA_AS, right = T)        # DSA for Drug A vs S
    Torn_AS                         # Tornado for Drug A vs S

    dev.off()

Set-2 Codes: Now, it’s printing the tables but it is printing one over the previous table or plot i.e. overwriting (below are the codes for printing three datasets and two plots).

    library(gridExtra)

    pdf("MyOutput_14.pdf", paper = "A4")

    grid.table(base_result)

    grid.table(DSA_AP)              # DSA for Drug A vs P
    Torn_AP                         # Tornado for Drug A vs P


    grid.table(DSA_AQ)              # DSA for Drug A vs Q
    Torn_AQ                         # Tornado for Drug A vs Q

    dev.off()

Moreover, in the set-2 the tables are some big and getting truncated i.e. the right part of each table is missing (getting cut in pdf file) -- need to adjust width etc. of tables in the pdf file print.

谢谢!

2 个答案:

答案 0 :(得分:0)

如果使用的是Rstudio,一种非常简单的方法是编写脚本,然后按Control + shift +K。这将自动创建报告,并且您可以根据需要选择PDF输出。注意:它仍然在使用RMarkdown-但您不必自己编写RMD文件,所以也许可以吗?

答案 1 :(得分:0)

我找到了用于“ a”和“ c”目的代码,对于“ b”,我现在减少了数据帧(输出表)的列标题和行名以节省空间/页面,现在我得到了所需的输出。我使用了以下代码:-

knitr::opts_chunk$set(fig.width = 7, fig.height = 5, fig.align = 'left', dpi = 96, echo = F, comment = "", message = F, warning = F)

# For PDF Output
rmarkdown::render("Model_3.3.R", output_format = "pdf_document", output_file = "Output_3.3_01.pdf")

# For HTML Output
rmarkdown::render("Model_3.3.R", output_format = "html_document", output_file = "Output_3.3_01.html")

注意:这些代码需要在母代码之外运行,即在单独的文件或R / RStudio控制台中运行。