gpt4 book ai didi

r - 编织 Rmarkdown block 时,不同语言(尤其是 Rcpp)不打印输出

转载 作者:行者123 更新时间:2023-12-02 09:18:46 25 4
gpt4 key购买 nike

这在 Rstudio 中有效,运行 block 时我可以直接在文档中获得实时预览。然而,当我将 .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 buglet;但是,/***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()
```

Sample output

关于r - 编织 Rmarkdown block 时,不同语言(尤其是 Rcpp)不打印输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44457347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com