【问题标题】:Rmarkdown does not reproduce bash code properlyRmarkdown 无法正确重现 bash 代码
【发布时间】:2016-12-20 21:07:39
【问题描述】:

我正在使用 Rmarkdown 来显示一些 bash 代码:

---
title: "Untitled"
author: "JPD"
date: "20 December 2016"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r gp.setup, engine= 'bash', eval=FALSE}

##Change names to remove dots
g.rename raster=gp_ortho.1,gp_ortho_1,gp_ortho.2,gp_ortho_2,\
gp_ortho.3,gp_ortho_3

##Group bands together
i.group --verbose group=gp_combo input=gp_ortho_1@gp1,gp_ortho_2@gp1,\
gp_ortho_3@gp1
```

但是,当编织成 html 时,g.rename 行大多会消失。为了比较,下面的 i.group 命令显示正确:

执行此操作的 g.rename 代码行是什么?是. 吗?

【问题讨论】:

    标签: r bash knitr r-markdown grass


    【解决方案1】:

    bash 将点/句点 (.) 视为执行后续内容的命令,因此它不是打印文字字符,而是查找名为 123 的文件。

    我没有设置 GRASS 以在不启动会话的情况下工作,但我猜如果你这样做,你的脚本会正确解释 g.rename 命令并查找你指定的光栅文件。

    我假设 GRASS 未在您的 Rmarkdown 文件中设置,因此它只是打印 g.rename... 字符,然后将 . 视为要执行的文件,因此不打印以下内容。要使其正确打印,请在文件名中使用 . 以外的其他内容,设置 Rmarkdown 会话以将 g.rename 理解为命令,或使用 \ 转义字符:

    ```{r gp-setup, engine="bash", eval=FALSE}
    # Change names to remove dots
    
    g.rename raster=gp_ortho\.1,gp_ortho_1,gp_ortho\.2,gp_ortho_2, \
    gp_ortho\.3,gp_ortho_3
    
    ## Group bands together
    i.group --verbose group=gp_combo input=gp_ortho_1@gp1,gp_ortho_2@gp1, \
    gp_ortho_3@gp1
    ```
    

    【讨论】:

    • r.in.gdal 在这些命令之前自然地用.s 命名栅格,因此我更改了它们。令人讨厌的是,针织文件中出现了转义斜线,但我想这是唯一的解决方法。感谢您的帮助。
    • @JPD 没问题,抱歉这不太对。我只能建议尝试将您的 knitr bash 环境配置为能够使用 GRASS 命令。或者,如果 r.in.gdal 生成实际文件,请使用 bash 的原生 mv
    猜你喜欢
    • 2020-07-06
    • 2014-11-11
    • 2012-08-05
    • 1970-01-01
    • 2022-01-21
    • 2013-12-06
    • 2018-05-09
    • 1970-01-01
    • 2023-02-04
    相关资源
    最近更新 更多