Создание пользовательского пакета R с пользовательской функцией data.table

Я хотел создать пакет, следуя этим очень ясным и простым инструкциям, 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" 

Что-то мне не хватает? Любые предложения будут приветствоваться


person Kill3rbee Lee Mtoti    schedule 23.06.2019    source источник
comment
предоставьте свой файл NAMESPACE, это вторая по важности часть пакета сразу после файла DESCRIPTION   -  person jangorecki    schedule 23.06.2019
comment
похоже, не имеет отношения к data.table, может быть, вы просто забыли поместить export(exploit_url) в свой файл NAMESPACE?   -  person jangorecki    schedule 23.06.2019
comment
@jangorecki У меня был #' @ export в моем .R файле. Я попробую это и ваше предложение   -  person Kill3rbee Lee Mtoti    schedule 23.06.2019
comment
Важен ваш файл NAMESPACE, а не подсказки, которые используются для его создания.   -  person jangorecki    schedule 23.06.2019
comment
Ваш обновленный вопрос - это в основном новая проблема (предупреждение), поэтому его следует опубликовать как новый вопрос.   -  person jangorecki    schedule 23.06.2019
comment
@jangorecki Я сделаю так, как вы предложили, опубликовать новый вопрос и разделить их.   -  person Kill3rbee Lee Mtoti    schedule 24.06.2019
comment
Спасибо, ваши предложения сработали для меня, и я смог заставить все работать   -  person Kill3rbee Lee Mtoti    schedule 24.06.2019


Ответы (1)


Решил на основе комментариев от @jangorecki.

person Kill3rbee Lee Mtoti    schedule 23.06.2019