R 为什么在此环境中未定义对象?

R 为什么在此环境中未定义对象?,r,environment-variables,R,Environment Variables,我对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() 此代码返回错误 Error in eval(expr, envir, enclos) : object

我对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()
此代码返回错误

Error in eval(expr, envir, enclos) : object 'mylist' not found
  • 为什么它会返回这个错误

  • 如何解决这个问题


对于
push
调用的父帧,
eval
没有发生,只有
赋值
被执行

您可以将
parent.frame()
传递到
eval
或采用以下更清晰的样式。(
main
未更改。)

push=function(l,x,envir=parent.frame())
{
envir[[l]]
push = function(l, x, envir = parent.frame())
{
    envir[[l]] <- append(envir[[l]], x)
}
push <- function(l, x) append(l, x)
main <- function() {
  mylist <- list("Hello")
  push(mylist, "World")
}
main()