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

R 如何在函数的数据框中添加列,r,R,我有一个数据框,我想对现有列进行一些计算,并在我的数据集中创建一个新列,它是现有列的组合。。。我可以很容易地做到这一点以外的功能。。。但如果我将代码包装到函数中,我所做的更改(函数内部)在函数外部是不可见的。。。i、 新列不存在 我希望能用示例代码来做这件事…我假设它是关于R。。。R不通过引用传递参数(环境和引用类(S5)是一个例外,但这超出了当前的抽象范围)。因此,当你写作时 addThree<-function(x){ x<-x+3 } 4->y addThree(y)

我有一个数据框,我想对现有列进行一些计算,并在我的数据集中创建一个新列,它是现有列的组合。。。我可以很容易地做到这一点以外的功能。。。但如果我将代码包装到函数中,我所做的更改(函数内部)在函数外部是不可见的。。。i、 新列不存在


我希望能用示例代码来做这件事…

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

addThree<-function(x){
 x<-x+3
}
4->y
addThree(y)
不用担心,这对于更复杂的对象也能顺利工作,因为R是垃圾收集的,并且具有惰性计算

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

addThree<-function(x) x+3

addThree最好的方法是使用dplyr库中的
mutate()
。例如:

addcol = function(dat){
    dat1 = mutate(dat, x2=x1*2)
    return(dat1)
}

dat是一个数据帧,其列名为“x1”。使用此函数
addcol()
,新数据集现在有一个名为“x2”的新列,它是“x1”值的两倍,假设
x1
是数字。

这将有助于了解您正在使用的软件,如果是关于R的,你需要通过
return(data\u frame\u I\u work\u with)
return(column\u I\u make)
(+1)从函数中返回新值,在
in()
语句中调用函数以动态创建新的data.frame列也很容易。这到底是什么?也许你的意思是?ReferenceClasses@mdsummer当然我有一个印象,它是相当有名的,但至少它有可怕的搜索引擎优化。这是一个逃离动物园的笑话
addcol = function(dat){
    dat1 = mutate(dat, x2=x1*2)
    return(dat1)
}