如何使用私有变量创建 R 函数?
How to create R functions with private variables?
如何创建一组都访问同一个私有变量的 R 函数?
假设我想创建 readSetting(key)
和 writeSetting(key,value)
函数,它们都在同一个隐藏列表 settings
上运行。如果我这样尝试...
local( {
settings <- list()
readSetting <<- function ( key ) settings[[key]]
writeSetting <<- function ( key, value ) settings[[key]] = value
} )
...然后 readSetting
和 writeSetting
在 local
调用之外不可见。如果我想让它们在那里可见,我必须先分配
readSetting <- writeSetting <- NULL
在 local
调用之外。必须有更好的方法,因为如果我不得不以两种不同的方式说哪些变量是 public.
,我的代码就不是 DRY
(这项工作的背景是我正在开发一个R包,这段代码将在一个辅助文件中,通过source
加载到主文件中。)
这个问题与 How to limit the scope of the variables used in a script? 有关,但那里的答案没有解决我的问题。
您可以使用 R6Class 包和以下非常粗略的代码来模拟类似的东西:
Privates <- R6Class("Privates",
public=list(
readSetting = function(key) {
private$settings[[key]]
},
writeSetting = function(key,value) {
private$settings[[key]] <<- value
}
),
private=list(
settings = list()
)
)
a <- Privates$new()
a$writeSetting("a",4)
a$readSetting("a")
直接读取 o 设置 a$setting
将不起作用。
如何创建一组都访问同一个私有变量的 R 函数?
假设我想创建 readSetting(key)
和 writeSetting(key,value)
函数,它们都在同一个隐藏列表 settings
上运行。如果我这样尝试...
local( {
settings <- list()
readSetting <<- function ( key ) settings[[key]]
writeSetting <<- function ( key, value ) settings[[key]] = value
} )
...然后 readSetting
和 writeSetting
在 local
调用之外不可见。如果我想让它们在那里可见,我必须先分配
readSetting <- writeSetting <- NULL
在 local
调用之外。必须有更好的方法,因为如果我不得不以两种不同的方式说哪些变量是 public.
(这项工作的背景是我正在开发一个R包,这段代码将在一个辅助文件中,通过source
加载到主文件中。)
这个问题与 How to limit the scope of the variables used in a script? 有关,但那里的答案没有解决我的问题。
您可以使用 R6Class 包和以下非常粗略的代码来模拟类似的东西:
Privates <- R6Class("Privates",
public=list(
readSetting = function(key) {
private$settings[[key]]
},
writeSetting = function(key,value) {
private$settings[[key]] <<- value
}
),
private=list(
settings = list()
)
)
a <- Privates$new()
a$writeSetting("a",4)
a$readSetting("a")
直接读取 o 设置 a$setting
将不起作用。