我正在尝试使用修改数组中值的函数,这是函数
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
看起来函数本身成功修改了数组a
。但是返回的a
数组仍然保持不变。怎么做到这一点?
答案 0 :(得分:2)
您需要将函数的结果分配回a
:
a <- testReturn(a)
就像@Aditya所说的那样,R通过值传递,而不是通过引用,与例如子程序在Fortran中的工作方式相反。只要在函数内部对a
进行了更改,就会在函数内部生成a
的副本。此新版本仅在功能范围内相关。将此传递给函数外部的环境的方法是通过return()
使用return参数。
返回结果后,您仍需要将其分配给全局环境中的新变量。在您显示的示例中,对象未分配给任何新对象,而是仅打印到屏幕上。要将其分配给a
的全局值,只需使用上面列出的代码。