c - 构建一个使用 c 代码库的 R 包

标签 c r

我想提交一个包,但是在阅读 R 存储库策略时,我发现:“源包可能不包含任何形式的二进制可执行代码。”。我目前在 .../inst 中有一个适用于 mac、win 和 Linux 的二进制可执行文件,并且该软件包在所有操作系统中都运行良好。但是,我认为 CRAN 不会接受这一点。我已经开始查找一些信息,但我是 C 的新手,而且我读到的所有内容都很困惑。似乎有几种方法可以执行此操作,但我不知道哪种方法最好。

我的二进制可执行文件需要目录中的特定类文件,该文件由函数呈现。

我所有的功能都依赖于 c 库。那么,我应该怎么做才能让CRAN接受呢? ...例如,用 Rtools 编译并将可执行文件放在 .../inst 中?将库留在 .../inst 中并创建一个函数来完成这项工作?

自学。解决问题所采取步骤的更新:

安装Rcpp包,

install.packages("Rcpp")

并安装R tools . 在 R studio 中创建一个类型为“Package w/Rcpp”的新包,并在“Create package based on source files”中选择我的 c 代码库的主文件”。

最佳答案

您的分析是正确的:二进制文件不会在 CRAN 上飞行。所以你需要把它变成一个图书馆。或者,更确切地说,是 CRAN 的软件包。

这并不听起来那么难。首先,如果您编写了二进制文件,您可能知道如何重组代码来完成

void main() {
     // preliminary stuff on argc/argv
     // sort our arguments
     // call main function f(a, b, c)
}

如果你能到达那个地方,你就差不多完成了。将执行f(a,b,c)的文件放入src/,使用(比较简单,比较简单)Rcpp code tp pass abc 到您的函数——然后返回结果(可能是数字 vector ?)。

Rcpp-introduction 开始小插图并从那里拿走它。

关于c - 构建一个使用 c 代码库的 R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58239904/

相关文章:

r - 我怎样才能让这个 R 代码片段更快、更像 R-ish?

c - Signed Short (Signed Int16) 乘法解释

c - 尝试加密和解密 code-beginner

c - 无法破译我老师的伪代码

c - 什么时候应该 typedef struct 与 pointer to struct?

C: 发送 GET 请求但wireshark没有捕获任何内容

r - 通过插入符调整 mtry 返回奇怪的值

r - 如何让RStudio自动编译R Markdown Vignettes?

r-将sf::st_within的输出转换为矢量

r - 如何使用ggplot绘制多因子列?