【问题标题】:Building an R package构建 R 包
【发布时间】:2012-09-27 22:11:25
【问题描述】:

我目前正在构建一个 R 包。

我希望提供示例数据。我知道 package.skeleton() 创建的数据目录以及如何加载数据集等。

问题是,我设计了读取文件作为输入的函数——原因是那些使用我的包的人通常会加载大型数据集。因此,我的函数逐行读取文件。

我在让我的包通过检查阶段时遇到问题,因为我不清楚如何让我的函数读取示例数据文件,而不是先加载它们,然后将结果表/数据框作为参数传递。

我希望这很清楚。

提前致谢!

编辑### 回复评论

我的函数将文件作为参数,即,

example <- function(test_file){

test <- readLines(testFile)

....Do something to each line ...

}

我不清楚如何使用我的 R 文档代码将文件而不是数据框传递给我的函数。

我在文档中的测试代码如下

\examples{
library(new_package)
tester <- test(testfile=somefile)
}

这无法执行,因为看起来 R 需要如下数据结构:

data(somedataset)
testet <- example(somedataset)

R CMD 检查过程无法定位和读取我的文件导致错误。有没有一种方法可以构造我的包,以便函数的参数是文件而不是数据结构,如果是这样,我如何在文档中的示例代码中将这些文件作为参数传递。

【问题讨论】:

  • 您能告诉我们您在check() 期间看到的确切错误吗?
  • @Maiasaura - 查看编辑。谢谢!
  • 在示例中添加\dontrun{ 怎么样?这样你就可以通过检查了。
  • 你真的有一个名为example的函数吗?
  • 另外,我不明白你为什么要逐行处理这个文件。在 R 中似乎超级低效和缓慢。

标签: r packages


【解决方案1】:

这个示例函数怎么样:

#' Example function
#' @param test_file file path
#' @examples \dontrun{
#' example(system.file('example_data.txt', package='package_name'))
#' }
example <- function(test_file) {
    test <- readLines(testFile)
    # whatever you wish to do
}

详情:

  • 将示例数据集从data dir(如果我是对的,它可以保存要在没有自定义函数的情况下加载的数据集)移动到例如inst 目录,最终会将您的示例文件放在已安装包的目录中,
  • 在文档中使用system.file 引用演示文件,
  • 并使用 \dontrun 指定示例,以消除由自动运行但仍显示在文档中的警告(尽管如果上述情况正常,则不需要后者恕我直言)。

【讨论】:

    【解决方案2】:

    我了解您在大数据方面的困境(我是一名处理相同问题的生物学家),因此我建议您不要运行该示例。这将允许您通过检查,但您还应该添加一个小注释(作为注释或函数文档中的其他地方),说明为什么这些不是直接运行的示例。

    \examples{
    \dontrun{
    # Throw in your examples here
     }
    }
    

    这应该允许您通过检查(至少解决这个问题)并使您的包可安装。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多