R 为什么在此环境中未定义对象?
我对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
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()