我来自OOP背景(C#/ Java具体),我真的不明白R如何处理函数外部的变量。
我做了这个例子:
result = list();
result$total = 0;
result$count = 0;
result$something = "abc";
a = 1:10;
b = 10:20;
mapply(function(x, y) {
print(result$something);
# Does not work with either = or <--
result$total <-- result$total + x + y;
result$count <-- result$count + 1;
print(result$count);
}, x = a, y = b);
result$average = result$total / result$count;
print(result$total);
print(result$count);
print(result$average);
在这里,匿名函数可以使用result
,因为该程序确实打印了10次“abc”。
但是,对其组件total
和count
的更改无法生效。 10次为result$count
打印1次,最后3行为0,0和NaN。
为什么会这样?如果我希望函数能够更改变量值,我该怎么办?
注意:在我的实际情况中,result
不是全局变量,而是在另一个函数中,我将使用函数中的return (result)
。