2

我正在尝试使用修改数组中的值的函数,这里是函数

testReturn<-function(a){
for (i in 1:6){
a[i]<-a[i]+i
}
return(a)
}

以下是运行结果

> a<-rep(0,6)
> testReturn(a)
  [1] 1 2 3 4 5 6
> a
  [1] 0 0 0 0 0 0

看起来函数本身成功地修改了 array a。但是返回的a数组仍然保持不变。如何正确地做到这一点?

4

1 回答 1

2

您需要将函数的结果分配回a

a <- testReturn(a)

就像@Aditya 所说,R 通过值传递,而不是通过引用传递,这与 Fortran 中子例程的工作方式不同。一旦你a对函数内部进行了更改,就会在函数内部创建一个副本a。此新版本仅在功能范围内相关。将它传递给函数外部环境的方法是使用返回参数 via return()

返回结果后,您仍然需要将其分配给全局环境中的新变量。在您展示的示例中,该对象未分配给任何新对象,而只是打印到屏幕上。要将其分配给 的全局值a,只需使用我上面列出的代码。

于 2013-04-01T17:44:40.603 回答