首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rcpp在降价

Rcpp在降价
EN

Stack Overflow用户
提问于 2018-10-04 11:45:20
回答 4查看 1.7K关注 0票数 2

我正在尝试使用Rmarkdown文档中使用Rcpp包创建的函数。但是,以下情况会导致错误:

代码语言:javascript
复制
```{Rcpp firstChunk}

doubleMe(Rcpp::IntegerVector ){

返回x+ x;

}

代码语言:javascript
复制

C:/Rtools/mingw_64/bin/g++ -I"C:/Users/JAKMIC~1/DOCUME~1/R/R-35~1.1/include“-DNDEBUG -I"C:/Users/jakmicha1/Documents/R/R-3.5.1/library/Rcpp/include”-I"C:/Users/jakmicha1/AppData/Local/Temp/RtmpQBQexm/sourceCpp-x86_64-w64-mingw32-0.12.18“-O2 -Wall -mtune=generic -c file17ec52d61f75.cpp -o文件17ec52d61f75.ofile17ec52d61f75.cpp:1:1:Rcpp没有命名Rcpp::IntegerVector doubleMe(Rcpp::IntegerVector ){^ make:*doubleMe file17ec52d61f75.cpp中的错误1错误:sourceCpp(代码= "Rcpp::IntegerVector doubleMe(Rcpp::IntegerVector x) {\n返回x+x];\n}"):错误1发生在构建共享库。

什么可能是原因,我如何解决它?

编辑:

谢谢你的回复。在运行块时,代码似乎工作正常。不过,编织时出错了。

代码语言:javascript
复制
---
title: "title"
output: pdf_document
---

```{Rcpp firstChunk}

#包括

//[Rcpp::出口]

double2Me(Rcpp::IntegerVector ){

返回x+ x;

}

代码语言:javascript
复制
```{r callFirstChunkInR}

double2Me(c(2,2))

代码语言:javascript
复制
# In command 'system(cmd)': 'make' not found

# Quitting from lines 7-13 (title.Rmd) 
# Error in command '(function (file = "", code = NULL, env = globalenv(), embeddedR = TRUE, ':
#  Error 1 occurred building shared library.
# Calls: <Anonymous> ... block_exec -> in_dir -> engine -> do.call -> <Anonymous>

在Windows7和Rcpp_0.12.19上,我在Rcpp_0.12.19 1.1.456中使用Rmarkdown 1.10。有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2018-10-04 11:50:30

您必须在代码块中添加#include <Rcpp>,并且很可能还将// [[Rcpp:export]]指令添加到您的函数中。

如下所示:

代码语言:javascript
复制
```{Rcpp firstChunk}

#包括

//[Rcpp::出口]

doubleMe(Rcpp::IntegerVector ){

返回x+ x;

}

代码语言:javascript
复制
票数 4
EN

Stack Overflow用户

发布于 2018-10-04 11:56:58

Rcpp块在R中等价于Rcpp::sourceCpp,而不是Rcpp:cppFunction.因此,您必须指定必要的包含,并告诉Rcpp导出函数:

代码语言:javascript
复制
```{Rcpp firstChunk}

#包括

//[Rcpp::出口]

doubleMe(Rcpp::IntegerVector ){

返回x+ x;

}

代码语言:javascript
复制
票数 4
EN

Stack Overflow用户

发布于 2018-10-04 12:04:53

您只是忽略了包含Rcpp.h[[Rcpp::export]]属性来创建函数并将其链接到R中。

代码语言:javascript
复制
```{Rcpp firstChunk}

#包括

// [Rcpp::出口]

doubleMe(Rcpp::IntegerVector ){

返回x+ x;

}

代码语言:javascript
复制

在另一个块中,您可以使用引擎R调用Rcpp函数。

代码语言:javascript
复制
```{r callFirstChunkInR}

doubleMe(c(2,2))

代码语言:javascript
复制

关于在R Markdown文档中使用不同引擎的其他信息可在以下网站找到:

R标记:最终指南-第2章,第2.7节其他语言引擎

Rcpp在R标记中的实例

您可以在这里找到我以前使用so应答RMarkdown文件中的一些文件:

https://github.com/coatless/so

RMarkdown文档的渲染

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52645875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档