我有一些我尝试全局分配的列表,因为只要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本身的错误吗?
答案 0 :(得分:4)
browser()
内的环境不是全局环境,而是函数browserfunc()
的本地环境。所以你正在做的是创建一个局部变量,然后将一些东西分配给一个全局变量,然后查看局部变量并想知道它为什么没有改变。
要在分配后查看全局变量的值,请执行get('smallList', env = .GlobalEnv)
。