【问题标题】:Rmarkdown not outputting results of system command to html fileRmarkdown没有将系统命令的结果输出到html文件
【发布时间】:2015-02-07 22:28:44
【问题描述】:

我是使用 Markdown 的新手,并且在 SO 上寻找与此类似的问题但没有成功。我正在使用 Rmarkdown(使用 Rstudio 和 knitr)编写一个小插图,描述读取作为包的一部分导入的数据文件。我可以使用

正确访问数据文件
> system.file("extdata", "Marlin-tag38606.txt", package = "xtractomatic")

我想在小插图中显示这个文件的前几行,所以我的代码是这样的

```{r, results=as.is}

datafile <- system.file("extdata", "Marlin-tag38606.txt", package = "xtractomatic")

system(paste("head -n5 ",datafile))

```

问题是这个调用的结果是输出到 Rmarkdown 控制台而不是小插图 html 文件。

RStudio 的 Rmarkdown 窗口中的输出是(但格式更好):

 |...................                                              |  29%
label: unnamed-chunk-8
date    lon lat lowLon  higLon  lowLat  higLat
4/23/2003   203.899 19.664  203.899 203.899 19.664  19.664
4/24/2003   204.151 19.821  203.912597  204.389403  18.78051934 20.86148066
4/30/2003   203.919 20.351  203.6793669 204.1586331 18.79728188 21.90471812
5/1/2003    204.229 20.305  203.9943343 204.4636657 18.90440013 21.70559987
  |....................                                             |  31%

这是我想要输出到小插图文本的内容,但它不存在。在生成的小插图中,我只有两行 R 代码,而不是系统调用的输出。 任何意见,将不胜感激。谢谢。

卡拉·威尔逊

【问题讨论】:

    标签: r knitr r-markdown


    【解决方案1】:

    将intern = TRUE 用于system(),然后使用cat() 输出:

    cat(system(paste("head -n5", datafile), intern = TRUE), sep = '\n')
    

    【讨论】:

    • 这有点丑。没有更好的办法吗?我试图在介绍级演示文稿中展示system 的简单用法,并且必须这样做使它看起来比需要的要密集得多。我现在的解决方法是用eval = FALSE 在一个块中打印出常规的system 代码,然后用echo = FALSE 在一个块中实际运行代码。
    • 这很难看,但我知道没有更好的方法。问题是system() 的输出打印方式不同,无法通过capture.output() 轻松捕获。
    • 如果您不介意黑客解决方案,请参阅github.com/yihui/knitr/issues/1203
    【解决方案2】:

    在 Rmarkdown 文档中使用 bash 块可以为我完成这项工作。 例如,testdat 包在其 extdata 目录中有 .csv 文件:

    ```{bash}
    头 -n5 ~/R/x86_64-pc-linux-gnu-library/3.3/testdat/extdata/2012.csv
    ```

    将在您的 html 文件中给出:

    ## 14,,2012,Censo,1775351,,
    ## 14,,2012,Votantes,1135568,64.0,
    ## 14,,2012,Nulos,9168,0.8,
    ## 14,,2012,Válidos,1126400,99.2,
    ## 14,,2012,布兰科斯,14640,1.3,

    我不确定这个选项是否存在于 2014 年,当您提出这个问题时。

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      相关资源
      最近更新 更多