我似乎无法使应用函数访问/修改在外部声明的变量。。。有什么好处
x=data.frame(年龄=c(11,12,13),体重=c(100105110))
x
testme<;-功能(df){
i<;-0
应用(df,1,功能(x){
年龄<;-x[1]
重量<;-x[2]
cat(sprintf(“年龄=%d,体重=%d\n”,年龄,体重))
i<;-i+1#这无法访问外部作用域中的i变量
z<;-z+1#无法访问全局变量
})
cat(sprintf(“i=%d\n”,i))
我
}
z<;-0
y<;-testme(x)
cat(sprintf(“y=%d,z=%d\n,y,z))
结果:
年龄=11,体重=100
年龄=12,体重=105
年龄=13,体重=110
i=0
y=0,z=0
使用<<-运算符可以写入外部作用域中的变量:
x=data.frame(年龄=c(11,12,13),体重=c(100105110))
x
testme<;-功能(df){
i<;-0
应用(df,1,功能(x){
年龄<;-x[1]
重量<;-x[2]
cat(sprintf(“年龄=%d,体重=%d\n”,年龄,体重))
i<;<;-i+1#这无法访问外部范围中的i变量
z<;<;-z+1#无法访问全局变量
})
cat(sprintf(“i=%d\n”,i))
我
}
z<;-0
y<;-testme(x)
cat(sprintf(“y=%d,z=%d\n,y,z))
结果如下:
年龄=11,体重=100
年龄=12,体重=105
年龄=13,体重=110
i=3
y=3,z=3
请注意,<<-是危险的,因为你打破了范围界定。只有在真正必要时才这样做,如果这样做了,请清楚地记录该行为(至少在更大的脚本中)