一、值传递
在R语言中,一切皆为对象,同时在调用函数的时候也采用值传递的方式,即作为参数的对象会被复制,然后将副本传递给函数
例如:
> f<-function(df2){
+ df2$a<-c(1,2,3)
+ }
> df<-data.frame(a=c(4,5,6))
> f(df)
> df
a
1 4
2 5
3 6
这里将数据框作为参数传递给函数的时候,函数内部的修改将不会影响原对象。这是因为调用f()函数时采用的时值传递的方法;df2中保持的不是指向原始数据df的引用,而是复制数据框df,df2指向的是副本数据框
如果我们想让函数内部的改动影响到函数外部,则需要在函数f()内部用返回值修改语句,然后再将函数的返回值的修改结果赋值给原来的变量
例如:
> f<-function(df2){
+ df2$a<-c(1,2,3)
+ return(df2)
+ }
> df<-data.frame(a=c(4,5,6))
> df<-f(df)
> df
a
1 1
2 2
3 3