编织 Rmarkdown 块时,不同的语言(尤其是 Rcpp)不打印输出
Different language (esp. Rcpp) not printing output when knitting an Rmarkdown chunk
这在 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")
```
不幸的是,评论标记 (/***R */
) 的执行由于您注意到的执行方式而没有得到保留。你可以说这是一个 rmarkdown
小号;但是,/***R */
更适用于在交互式开发过程中嵌入调用。
此外,使用 int main()
是一个很大的禁忌。引用德克的话:
You can't just drop R context into a standalone main()
as you need R for R context.
因此,我选择将函数名称更改为 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()
```
这在 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")
```
不幸的是,评论标记 (/***R */
) 的执行由于您注意到的执行方式而没有得到保留。你可以说这是一个 rmarkdown
小号;但是,/***R */
更适用于在交互式开发过程中嵌入调用。
此外,使用 int main()
是一个很大的禁忌。引用德克的话:
You can't just drop R context into a standalone
main()
as you need R for R context.
因此,我选择将函数名称更改为 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()
```