将列表附加到浏览器中的<< - (全局赋值)的列表中()

时间:2014-04-14 19:42:14

标签: r

我有一些我尝试全局分配的列表,因为只要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本身的错误吗?

1 个答案:

答案 0 :(得分:4)

browser()内的环境不是全局环境,而是函数browserfunc()的本地环境。所以你正在做的是创建一个局部变量,然后将一些东西分配给一个全局变量,然后查看局部变量并想知道它为什么没有改变。

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