gpt4 book ai didi

r - 在函数/包中使用 data.table(使用 roxygen)

转载 作者:可可西里 更新时间:2023-11-01 09:19:40 25 4
gpt4 key购买 nike

我对 R 很陌生,但似乎这个问题与以下帖子密切相关 1 , 2 , 3和一个有点不同的话题4 .不幸的是,我没有足够的声望在那里发表评论。我的问题是,在阅读了那里的所有建议之后,代码仍然无法正常工作:

  1. 我在描述文件中加入了“Depends”
  2. 我尝试了第二种方法,包括更改 NAMESPACE (不可重现)
  3. 我创建了一个示例包 here包含一小部分代码,显示出一些不同的错误("J"not found in routes[J(lat1, lng1, lat2, lng2), .I, roll = "nearest", by = .EACHI ] 而不是 'lat1' not found in routes[order(lat1, lng1, lat2, lng2, time)])
  4. 我使用控制台和 R 脚本测试了所有脚本。在那里,代码运行没有问题。

非常感谢您的支持!

编辑:@Roland

  1. 你是对的。 Roxygen 覆盖命名空间。您必须在函数中包含 #' @import data.table。你明白吗,为什么只在描述文件中插入 Depends: data.table 不起作用?这可能是文档中的有用提示,还是我错过了?
  2. 更改为 routes <- routes[order("lat1", "lng1", "lat2", "lng2", "time")] 是误导性的,至少有一点帮助,因为这条线突然没问题了更多的。在这种情况下使用 data.frame 顺序是否正确?我会看看我现在能走多远。我会让你知道最后的结果...

最佳答案

回答您的问题(编辑后)。

  1. 引用 R exts 手册:

Almost always packages mentioned in ‘Depends’ should also be imported from in the NAMESPACE file: this ensures that any needed parts of those packages are available when some other package imports the current package.

因此,尽管您依赖或导入 data.table,但您仍然应该在 NAMESPACE 中导入。

  1. order 调用似乎不是您所期望的,请尝试以下操作:

order("lat1", "lng1", "lat2", "lng2", "time")

library(data.table)
data.table(a=2:1,b=1:2)[order("a","b")]

如果出现问题,我建议通过为您的预期结果编写单元测试来开始调试。将单元测试放入包中的最基本方法只是在 tests 目录中调用 stopifnot(...) 的普通 R 脚本。请注意,您需要在脚本的开头库/需要您的包。

关于r - 在函数/包中使用 data.table(使用 roxygen),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36859141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com