我正在尝试使用Rmarkdown文档中使用Rcpp包创建的函数。但是,以下情况会导致错误:
```{Rcpp firstChunk}doubleMe(Rcpp::IntegerVector ){
返回x+ x;
}
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发生在构建共享库。
什么可能是原因,我如何解决它?
编辑:
谢谢你的回复。在运行块时,代码似乎工作正常。不过,编织时出错了。
---
title: "title"
output: pdf_document
---
```{Rcpp firstChunk}#包括
//[Rcpp::出口]
double2Me(Rcpp::IntegerVector ){
返回x+ x;
}
```{r callFirstChunkInR}double2Me(c(2,2))
# 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。有什么想法吗?
发布于 2018-10-04 11:50:30
您必须在代码块中添加#include <Rcpp>,并且很可能还将// [[Rcpp:export]]指令添加到您的函数中。
如下所示:
```{Rcpp firstChunk}#包括
//[Rcpp::出口]
doubleMe(Rcpp::IntegerVector ){
返回x+ x;
}
发布于 2018-10-04 11:56:58
Rcpp块在R中等价于Rcpp::sourceCpp,而不是Rcpp:cppFunction.因此,您必须指定必要的包含,并告诉Rcpp导出函数:
```{Rcpp firstChunk}#包括
//[Rcpp::出口]
doubleMe(Rcpp::IntegerVector ){
返回x+ x;
}
发布于 2018-10-04 12:04:53
您只是忽略了包含Rcpp.h和[[Rcpp::export]]属性来创建函数并将其链接到R中。
```{Rcpp firstChunk}#包括
// [Rcpp::出口]
doubleMe(Rcpp::IntegerVector ){
返回x+ x;
}
在另一个块中,您可以使用引擎R调用Rcpp函数。
```{r callFirstChunkInR}doubleMe(c(2,2))
关于在R Markdown文档中使用不同引擎的其他信息可在以下网站找到:
Rcpp在R标记中的实例
您可以在这里找到我以前使用so应答RMarkdown文件中的一些文件:
https://github.com/coatless/so
RMarkdown文档的渲染

https://stackoverflow.com/questions/52645875
复制相似问题