R 将列表附加到带有<<;-浏览器中的(全局分配)()

R 将列表附加到带有<<;-浏览器中的(全局分配)(),r,R,我有很多列表,我正在尝试全局分配,因为我希望它们在R打开时可用。 不幸的是,我似乎无法测试代码中的行为,因为它在浏览器模式和常规控制台中是不同的 在本例中,我将使用这个程序进入浏览器模式 browsefunct<-function() { browser() browser() } browsefunct() Browse[1]> smallList <- list(1) Browse[1]> smallList [[1]] [1] 1 Browse[1]&g

我有很多列表,我正在尝试全局分配,因为我希望它们在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
browsefunct smallList smallList
[[1]]
[1] 1
浏览[1]>smallList 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

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


要在赋值后查看全局变量的值,请执行
get('smallList',env=.GlobalEnv)
浏览器()中的环境不是全局环境,而是函数的本地环境
browserfunc()
。所以你要做的是创建一个局部变量,然后给一个全局变量赋值,然后看看这个局部变量,想知道为什么它没有改变


若要在赋值后查看全局变量的值,请在建议bug之前执行
get('smallList',env=.GlobalEnv)

,尤其是在处理
之类的问题时,我阅读了R inferno。我尝试使用全局赋值,因为我只想将文件加载到R中一次。我在这里调整的这些变量是为了跟踪我正在加载的文件。好吧,你不能“只加载一次”,因为这取决于正确维护你的
.Rdata
文件,或者你在启动时加载的任何文件。所谓“曾经”,我的意思是“在加载R并运行它一次之后”,不是真的永远,来吧。我从一个文件中读取数据,将数据存储到R中,这些数据可以在程序的多次运行中使用。显然,这在全球范围内是有意义的。在提出bug之前,特别是在处理
之类的事情时,我阅读了R地狱。我尝试使用全局赋值,因为我只想将文件加载到R中一次。我在这里调整的这些变量是为了跟踪我正在加载的文件。好吧,你不能“只加载一次”,因为这取决于正确维护你的
.Rdata
文件,或者你在启动时加载的任何文件。所谓“曾经”,我的意思是“在加载R并运行它一次之后”,不是真的永远,来吧。我从一个文件中读取数据,将数据存储到R中,这些数据可以在程序的多次运行中使用。显然,这在全球范围内是有意义的。谢谢,我不知道,谢谢,我不知道