Я изо всех сил пытаюсь назначить переменную пространства имен внутри функции. Рассмотрим этот пример, используя CRAN-пакет «qcc»: qcc()
генерирует график, но параметры отображения этого графика контролируются qcc.options()
.Назначение переменных пространства имен внутри функции
При работе в глобальном, все в порядке:
library(qcc)
qcc.options(bg.margin="red") # sets margin background colour, i.e.
# qcc:::.qcc.options$bg.margin is "red"
qcc(rnorm(100), type = "xbar.one") # generates a plot with red margin
Но при работе в локальной среде функции, qcc
и qcc.options
, кажется, используют пространство имен по-разному:
foo <- function(x){
qcc.options(bg.margin=x)
qcc(rnorm(100), type = "xbar.one")
}
foo("green") # generates a default plot with grey margins
Большое спасибо! Я знал, что происходит, я просто не знал, как правильно назначить переменную. 'assignInNamespace' отлично работает. – albifrons
@ user2853399 Звучит хорошо. Я бы определенно упомянул об этом разработчику пакета, хотя вам не нужно было делать этот шаг (так как не очевидно, что именно делает qcc.options). – Thomas
Я отправил письмо сопровождающему со ссылкой на эту страницу сразу после получения ответа :) Еще раз спасибо! – albifrons