R variable names in loop, get, etc等问题在来自其他语言的人群中很常见。正如我在该示例中给出的那样,标准答案通常是不可能遍历全局环境中的变量列表并修改基础变量,只能复制副本。这符合R语义,即不通过引用传递值并根据需要创建对象的副本。
然而,这种类型的构造起作用:
xData <- data.frame(a = 1:2, b = 3:4)
yData <- data.frame(a = 4:5, b = 6:7)
varList <- ls(pattern = "Data$")
for(var in varList) {
.GlobalEnv[[var]]$c <- with(.GlobalEnv[[var]], a + b)
}
xData
# a b c
# 1 1 3 4
# 2 2 4 6
除了糟糕的编程风格,并不真正适合&#39; R&#39;做事方式,这种编码方式有什么具体问题吗?
请注意我并不是说这是一种好习惯,只是好奇这是否可能会产生意想不到的副作用。