我有 21 个全局环境变量,每个变量都包含大量数据。我想在函数中通过引用来访问这些变量,但我想参数化它们的名称,例如,如果我有 SPdata、NEdata、FRdata 等...... 21 个变量,我想知道如何通过传递在函数中访问它们只有“国家名称”(即“SP、“NE”、“FR”等)而无需创建副本(因为它们的大小都超过 300 兆)。Get 似乎制作了一个副本(对我的大小来说效率低下)数据)。我可以这样做吗?我目前正在到处使用获取
cData <- get(paste(cCode, "data", sep = ""))
是的,我知道我应该将它们全部放入全局环境中的列表中,但现在为时已晚,我不想重构所有代码。只是我的“获取”变得内存效率低下,循环中的多次访问可能很慢。例如,我可以像访问列表一样访问每个变量吗?
我应该使用 countryData = list(SPdata, NEdata, FRdata..etc),使用 countryData[[paste(cCode, "data", sep = "")]] 访问它们,但现在为时已晚。
我应该补充一点,我确实打算更改函数中的一些值,并且 get() 确实会在更改时复制,从下面的不同地址可以看出。
> .Internal(inspect(a))
@101b7bcf8 14 REALSXP g0c1 [NAM(2)] (len=1, tl=0) 1
> g <- function() {x <- get("a"); x; x <- 2; .Internal(inspect(x))}
> g()
@101cea648 14 REALSXP g0c1 [NAM(2)] (len=1, tl=0) 2
>