R中的变量/列表组件范围?

时间:2017-12-21 11:13:40

标签: r function scope global-variables lexical-scope

我来自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”。

但是,对其组件totalcount的更改无法生效。 10次​​为result$count打印1次,最后3行为0,0和NaN。

为什么会这样?如果我希望函数能够更改变量值,我该怎么办?

注意:在我的实际情况中,result不是全局变量,而是在另一个函数中,我将使用函数中的return (result)

0 个答案:

没有答案