编织Rmarkdown块时,不同的语言(尤其是Rcpp)不打印输出

use*_*808 2 r rcpp knitr r-markdown

这适用于Rstudio,我在运行块时直接在文档中获得实时预览.但是,当我将.Rmd编织为.html时,我只得到代码的回显而没有输出.

```{r engine='Rcpp'}
#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
int main() {
  return 4;
}

/*** R
main()
*/
```
Run Code Online (Sandbox Code Playgroud)

但是,如果我对python做同样的事情,我会在编织时获得正确的输出:

```{r engine='python'}
print("abc")
```
Run Code Online (Sandbox Code Playgroud)

coa*_*ess 5

不幸的是,注释markup(/***R */)执行不会因为你注意到它的执行方式而被保留.你可以说这是一个rmarkdown小问题; 但是,这/***R */意味着在交互式开发期间嵌入呼叫更多.

而且,使用int main()是一个很大的禁忌.引用Dirk:

您不能只将R上下文放入独立中,main()因为您需要R表示R上下文.

因此,我选择将函数名称更改为toad().

为了达到相同的结果并且对于有文化的编程,每个部分都应嵌入到单独的代码块中.也就是说,您必须创建一个Rcpp代码块(最好是启用缓存)和一个包含实际函数调用的R代码块.

例如

---
title: Test Doc
author: JJB
date: 6/9/2017
output: html_document
---


```{Rcpp hpc-code, cache = TRUE}
#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
int toad() {
  return 4;
}
```

```{r interactive-output}
toad()
```
Run Code Online (Sandbox Code Playgroud)

样本输出