这适用于Rstudio,我在运行块时直接在文档中获得实时预览。但是,当我将.Rmd编织为.html时,我只得到代码的回显而没有输出。
```{r engine='Rcpp'}
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int main() {
return 4;
}
/*** R
main()
*/
```
但是,如果我对python做同样的事情,我会在编织时获得正确的输出:
```{r engine='python'}
print("abc")
```
答案 0 :(得分:5)
不幸的是,注释标记(/***R */
)执行因为你注意到它的执行方式而不会被保留。你可以说这是一个rmarkdown
小问题;但是,/***R */
更适合在交互式开发过程中嵌入调用。
此外,使用int main()
是一个很大的禁忌。引用Dirk:
您不能只将 R 上下文放入独立的
main()
,因为 R 上下文需要 R 。
因此,我选择将函数名称更改为toad()
。
为了达到相同的结果并且对于有文化的编程,每个部分都应嵌入到单独的代码块中。也就是说,您必须创建一个 Rcpp 代码块(最好是启用缓存)和一个 R 代码块,其中包含实际的函数调用。
e.g。
---
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()
```