присваивание переменной внутри библиотечной функции - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь создать библиотеку 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 ошибку

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...