如何在函数内的数据框中添加列

use*_*247 10 r

我有一个数据框,我想用现有的列进行一些计算,并在我的数据集中创建新列,这是现有的组合......我可以在函数外轻松地做到这一点...但是如果我将代码包装好函数,我所做的更改(内部函数)在函数外部是不可见的...即新列不存在...

我希望示例代码能够做到这一点......

mbq*_*mbq 7

我假设它是关于R ... R不通过引用传递参数(环境和引用类(S5)是一个例外,但这超出了当前的抽象范围).因此,当你写作

addThree<-function(x){
 x<-x+3
}
4->y
addThree(y)
Run Code Online (Sandbox Code Playgroud)

y在代码结束时仍然是4,因为在函数内部,xys值的新副本,而不是它y自身(再次,不完全是,但那些是更高阶的细节).

因此,您必须适应R的pass-by-copy方案并返回更改后的值并将其分配回您的变量(使用旧的措辞,R中没有过程):

addThree<-function(x){
 return(x+3)
}
4->y
addThree(y)->y
#y is now 7
Run Code Online (Sandbox Code Playgroud)

不用担心,这对于更复杂的对象来说也能顺利运行,因为R是垃圾收集并且具有惰性评估.

顺便说一下,return如果你想返回函数中产生的最后一个值,你可以省略,即它addThree的定义可能如下所示:

addThree<-function(x) x+3
Run Code Online (Sandbox Code Playgroud)