在浏览器 () 中将列表转发到具有 <<- (全局赋值)的列表



我试图全局分配许多列表,因为我希望只要R打开,它们就可以使用。不幸的是,我似乎无法测试代码中的行为,因为它在浏览器模式和常规控制台中是不同的。

这是我在这个例子中进入浏览器模式时使用的程序

browsefunct<-function()
{
  browser()
  browser()
}
browsefunct()
Browse[1]> smallList <- list(1)
Browse[1]> smallList
[[1]]
[1] 1
Browse[1]> smallList <<- c(smallList,list(smallList)) #does nothing?
Browse[1]> smallList
[[1]]
[1] 1
Browse[1]> smallList <- c(smallList,list(smallList))
Browse[1]> smallList
[[1]]
[1] 1
[[2]]
[[2]][[1]]
[1] 1

但是

> smallList<-list(1)
> smallList <<- c(smallList,list(smallList)) #now works
> smallList
[[1]]
[1] 1
[[2]]
[[2]][[1]]
[1] 1

这是R本身的错误吗?

browser()内部的环境不是全局环境,而是函数browserfunc()的本地环境。所以你要做的是创建一个局部变量,然后给全局变量赋值,然后看看局部变量,想知道为什么它没有改变。

要查看赋值后全局变量的值,请执行get('smallList', env = .GlobalEnv)

相关内容