【问题标题】:Creating custom R package with data.table custom function使用 data.table 自定义函数创建自定义 R 包
【发布时间】:2019-11-05 07:31:00
【问题描述】:

我想按照这些非常清晰和简单的说明创建一个包,https://hilaryparker.com/2014/04/29/writing-an-r-package-from-scratch/ 但是,以下函数在不在包内时有效,但在包内时不起作用。

要重现此问题,请在默认文件夹中运行以下命令:第 1 步

library("devtools")
library(roxygen2)
create_package("poweR")

这会将您带到一个新窗口并在该窗口中:第 2 步

exploit_url.R:创建并将其复制到包的R文件夹

#' @import data.table
exploit_url <- function(df, href, target, anchor, new_col) {
  return(df[, (new_col) := paste0("<a href='", df[[href]], "' target='", target, "'>", df[[anchor]], "</a>", "<br>")][, c(1, 3:6, 8)])
}

然后在创建并复制/保存文件到包的R文件夹后运行以下命令:

library(devtools)
use_package("data.table")
document()
build()
install()

关闭该窗口并返回窗口第 1 步

library("poweR")
library(data.table)
DT <- structure(list(cveid = c("CVE-2008-4726", "CVE-2018-18798", "CVE-2001-0791", 
                             "CVE-2005-1823"), EDB_ID = c("6804", "45727", "20893", "25766"
                             ), Type = c("remote", "webapps", "remote", "webapps"), 
                   Platform = c("Windows","PHP", "Windows", "PHP"), 
                   E_DB_Verified = c("Verified", "Waiting verification", "Verified", "Verified"), 
                   E_DB_Published = c("2008-10-22", "2018-10-29", "2001-05-24", "2005-05-30"), 
                   url = c("https://www.exploit-db.com/exploits/6804/","https://www.exploit-db.com/exploits/45727/", 
                           "https://www.exploit-db.com/exploits/20893/", "https://www.exploit-db.com/exploits/25766/")), 
                   class = c("data.table", "data.frame"), row.names = c(NA, -4L))


DT <- exploit_url(DT, "url", '_blank', "E_DB_Verified", "exploitdburl")

我收到以下错误:

Error in exploit_url(DT, "url", "_blank", "E_DB_Verified", "exploitdburl") : 
  could not find function "exploit_url" 

我有什么遗漏吗?欢迎任何建议

【问题讨论】:

  • 提供您的 NAMESPACE 文件,它是仅次于 DESCRIPTION 文件的包中第二重要的部分
  • 似乎与data.table无关,也许您只是忘记将export(exploit_url)放入您的NAMESPACE文件中?
  • @jangorecki 我的 .R 文件中有 #' @ export。我会试试你的建议
  • 重要的是你的 NAMESPACE 文件,而不是用来生成它的提示
  • 您更新的问题基本上是一个新问题(警告),因此应该作为新问题发布

标签: r r-package


【解决方案1】:

根据@jangorecki 的 cmets 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2020-11-19
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多