首页 > 解决方案 > 使用 devtools 和函数“use_rcpp”创建 R 包指示我将代码行复制到不存在的文件中

问题描述

我正在尝试创建一个小型测试 R 包,只是为了掌握工作流程。我一直在关注这里找到的教程:https : //r-pkgs.org/index.html 一切都运行顺利,但最终我想将 rcpp 代码添加到我的包中,这就是我遇到问题的地方。devtools 包中的函数 use_rcpp 应该为您的包设置开始添加 c++ 文件所需的一切。但是,一旦命令运行完毕,它会告诉您将注释复制并粘贴到不存在的文件中。我正在关注的教程在这里https://r-pkgs.org/src.html#cpp说了同样的话,但只是说将 roxygen 标签添加到您的包中。它没有指定我需要在哪里添加它们。

我得到的输出与教程中的输出不同,但我认为那只是因为我运行的是不同的版本。

函数给出的输出:

✔ 将活动项目设置为“R/packages/rcppTester”

✔ 创建'src/'

✔ 将 ' .o'、'. so'、'*.dll' 添加到 'src/.gitignore'

● 将以下行复制并粘贴到“R/packages/rcppTester/R/rcppTester-package.R”中:

## 使用这个命名空间:开始

#' @useDynLib rcppTester, .registration = TRUE

## 使用这个命名空间:结束

空值

[复制到剪贴板]

✔ 将“Rcpp”添加到说明中的 LinkingTo 字段

✔ 将“Rcpp”添加到说明中的导入字段

● 将以下行复制并粘贴到“R/packages/rcppTester/R/rcppTester-package.R”中:

## 使用这个命名空间:开始

#' @importFrom Rcpp sourceCpp

## 使用这个命名空间:结束

空值

[复制到剪贴板]

同样,我没有名为“rcppTester-package.R”的文件,当我尝试使用 cpp 文件时,我的包抛出错误。任何建议将不胜感激。

标签: rpackagerstudiodevtools

解决方案


您不必使用它们,devtools或者usethis如果它们使您感到困惑 - 它们确实添加了一层混淆,有时会阻碍正在发生的事情。

Rcpp 本身有一个功能Rcpp.package.skeleton(),而 RStudio IDE 在“文件 -> 新项目 -> 使用 Rcpp 打包”下有一些相关的(但独立的)。我两个都用。您可以从其中一个开始并获得一个可以编译的包。两者都会这样做。

将其作为快照,然后添加 roxygen2 文档。如果您手动执行此操作,则需要运行compileAttributes()以将 roxygen 标记从 C++ 文件获取到将在其中roxygenize()看到它的 R 文件。RStudio 会自动为您完成这两项工作。

所以总结一下:如果联合“使用 Rcpp 和 roxygen 的包”给您带来问题,请尝试将“使用 Rcpp 的包”和“使用 roxygen 的包”分开。


推荐阅读