【问题标题】:export all the content of r script into pdf将r脚本的所有内容导出为pdf
【发布时间】:2013-12-13 20:39:08
【问题描述】:

我想将 r 脚本的所有内容导出为 pdf。有可能吗? 我使用这些命令导出,但我看到的只是导出图形

pdf(file = "example.pdf")
  dev.off()

谢谢!

    setwd("C:/Users/Prat/Desktop/c")
    > dir()
    [1] "script.R"
    > knitr::stitch('script.r')
 output file: script.tex

在我的文件夹中没有出现 script.pdf ,而是一个 script.tex 和一个包含 pdf 格式图片的文件夹

【问题讨论】:

  • 是的,pdf() 函数是一个图形设备。历史机制可用于保存最近命令的记录。您应该明确“导出 r 脚本的所有内容”是什么意思。
  • @OriolPrat 看着你的截图文件'script.tex'是一个pdf文件。尝试使用 PDF 阅读器打开它和/或将扩展名更改为“pdf”。
  • 我做了,但是adobe给我的消息内容不可用。
  • 运行tools::texi2pdf('script.tex'),看看你是否得到了一个PDF。
  • 它给了我错误 Error: running 'texi2dvi' on 'script.tex' failed

标签: r pdf export


【解决方案1】:

您可以使用 knitr 包来做到这一点。这是一个工作流程:

  1. 将脚本另存为文件(例如,myscript.r
  2. 然后运行knitr::stitch('myscript.r')
  3. 生成的 PDF 将在本地保存为 myscript.pdf。您可以使用browseURL('myscript.pdf')查看。

【讨论】:

  • 谢谢,但是 myscript.tex 不是 pdf 格式,这让我省了:/
  • @OriolPrat 检查您的工作目录。那里也应该有一个 PDF。
  • 感谢您的帮助。现在我已经看到,它为我导出了一个文件夹,其中每个图形都有一个 pdf 和一个 .tex 文件夹。但是我仍然无法导出脚本的文本部分。
  • @OriolPrat 你确定它不存在吗?如果是这样,请使用您尝试过的脚本和 knitr 代码的最小可重现示例来更新您的问题。
【解决方案2】:

您可以使用生成html文件,

    knitr::stitch_rhtml('filename.r')

.tex 文件不易阅读,但 html 文件可以在任何浏览器中轻松查看。

【讨论】:

  • 请注意,大多数浏览器都可以“打印到文件”——在打印对话框中,您通常可以选择 pdf 或 postscript 作为文件的输出格式,以及文件的位置。只需尝试在浏览器中打开任何页面(即使是这个页面),按Ctrl+P 看看是否可以找到“打印到文件”选项。
【解决方案3】:

请使用以下代码集(您需要根据您的数据集/数据框名称进行修改)。

library(gridExtra)
library(datasets)
setwd("D:\\Downloads\\R Work\\")
data("mtcars") # Write your dataframe name that you want to print in pdf
pdf("data_in_pdf.pdf", height = 11, width = 8.5)
grid.table(mtcars)
dev.off()

谢谢。

【讨论】:

    【解决方案4】:

    对于所有正在寻找简单快速解决方案的人,我建议使用 utils 中的函数 capture.output (https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/capture.output)。

    只需要 1.) 捕获一个想要运行的命令并将其分配给一个变量,然后 2.) 然后打印该变量。如您所见,图像可以沿途打印。我上面链接的网页上的示例没有使用markdown。

    这是我的降价示例(这确实是一个人所需要的):

    ```{r, echo = F}
    # fake data-set
    x = rnorm(50, mean = 3.3, sd=1)
    y = rnorm(50, mean = 3.1, sd=0.9)
    z = rnorm(50, mean = 3.2, sd=1.1)
    # create dataframe
    df <- data.frame(x, y, z)
    
    # adding a graphic
    plot(df$x, df$y)
    
    # create a model as example
    linearMod <- lm(y ~ x + z, data=df) 
    
    # all one needs to capture the output!!:
    bla <- capture.output(summary(linearMod))
    print(bla)
    ```
    

    备注:如果还想打印命令,那也很容易。如果您还想打印警告,只需将“echo = F”替换为“warning = F”或完全删除文本,以防万一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-15
      • 2015-08-09
      • 1970-01-01
      • 2021-08-26
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多