Я пытаюсь создать библиотеку r
. Когда я создаю и вызываю функцию, которая выполняет некоторое назначение извне библиотеки, она работает (CASE A), но не тогда, когда я вызываю ее из библиотеки (CASE B).
Например:
test<- function(){
for(f in list.files()){
print(f)
dt <- read.csv(f, nrows=1, fileEncoding="UTF-8-BOM")
nm <- strsplit(f,".")[[1]][1]
assign(paste0(nm,"_dim"), dt)
}
}
Я понимаю, что в СЛУЧАЕ A assign
просто отправляется в глобальную среду, но я не уверен, что происходит в СЛУЧАЕ B.
В идеале я не хочу загрязнять глобальную среду большим количеством переменных, которые будут использоваться только с пакетом, таким как
assign(paste0(nm,"_dim"), dt, envir = globalenv())
мой последний вариант.
Я наивно пытался сделать assign(paste0(nm,"_dim"), dt, envir = as.environment("package:mypackagename"))
, но я получаю cannot add bindings to a locked environment
ошибку
Есть идеи?