为什么没有在此环境中定义对象?
Why is the object not defined in this environment?
我对环境在 R 中的工作原理知之甚少。
这是我的代码
push = function(l, x)
{
assign(l, append(eval(as.name(l)), x), envir=parent.frame())
}
main = function()
{
mylist = list("hello")
push("mylist","World")
}
main()
此代码return是错误
Error in eval(expr, envir, enclos) : object 'mylist' not found
为什么会出现return这个错误?
如何解决?
eval
未针对 push
调用的父框架发生,只有 assign
发生。
可以将 parent.frame()
传递给 eval
或采用以下看起来更清晰的样式。 (main
不变。)
push = function(l, x, envir = parent.frame())
{
envir[[l]] <- append(envir[[l]], x)
}
或传递对象本身并return它们以避免处理环境:
push <- function(l, x) append(l, x)
main <- function() {
mylist <- list("Hello")
push(mylist, "World")
}
main()
我对环境在 R 中的工作原理知之甚少。
这是我的代码
push = function(l, x)
{
assign(l, append(eval(as.name(l)), x), envir=parent.frame())
}
main = function()
{
mylist = list("hello")
push("mylist","World")
}
main()
此代码return是错误
Error in eval(expr, envir, enclos) : object 'mylist' not found
为什么会出现return这个错误?
如何解决?
eval
未针对 push
调用的父框架发生,只有 assign
发生。
可以将 parent.frame()
传递给 eval
或采用以下看起来更清晰的样式。 (main
不变。)
push = function(l, x, envir = parent.frame())
{
envir[[l]] <- append(envir[[l]], x)
}
或传递对象本身并return它们以避免处理环境:
push <- function(l, x) append(l, x)
main <- function() {
mylist <- list("Hello")
push(mylist, "World")
}
main()