我正在尝试在 R6Class 中获取函数的formals()。但这似乎不起作用。我认为环境可能存在问题。
Test <- R6Class(
"Test",
public = list(
foo = function(x){
x
},
printFormals1 = function(){
formals("foo")
},
printFormals2 = function(){
formals("self$foo")
}
)
)
test <- Test$new()
test$printFormals1()
test$printFormals2()
错误说:
Error in get(fun, mode = "function", envir = parent.frame()) :
object 'foo' of mode 'function' was not found
Error in get(fun, mode = "function", envir = parent.frame()) :
object 'self$foo' of mode 'function' was not found
如果没有 R6Classes,这很容易:
foo <- function(x){
x
}
formals("foo")
结果:
$x
很高兴有人可以解释和帮助
谢谢迈克尔
编辑:
找到了解决方案。与 R6class 无关: eval(parse(text = "self$foo")) 完成了这项工作。我会留下这个问题,以防其他人面临类似的问题。
Test <- R6Class(
"Test",
public = list(
foo = function(x){
x
},
printFormals2 = function(){
print(formals(eval(parse(text = "self$foo"))))
}
)
)
test <- Test$new()
test$printFormals2()