我有几个具有相同变量的数据表,需要整理大量数据。我曾想过要创建一个函数,但是我在努力传递变量名,该变量名显示在:=
分配的两侧。
查看带有mtcars
的MWE,其中要更改的变量为wt
。我尝试了substitute
和eval
,但无济于事。
我如何使以下代码正常工作?缺什么?为什么这个不起作用?
DTmtcars <- data.table(mtcars)
wt_correction <- function(.df = NULL, .wt_var = NULL){
.df[cyl==4, .wt_var := .wt_var*2]
.df[cyl==6, .wt_var := .wt_var*3]
.df[cyl==8, .wt_var := .wt_var*0.5]
return(.df)
}
wt_correction(.df = DTmtcars, .wt_var= "wt")
答案 0 :(得分:1)
从各种SO答案的汇编中,以下内容似乎对我有用:
wt_correction <- function(.df = NULL, .wt_var = NULL){
.df[cyl==4, (.wt_var) := get(.wt_var)*2]
.df[cyl==6, (.wt_var) := get(.wt_var)*3]
.df[cyl==8, (.wt_var) := get(.wt_var)*0.5]
return(.df)
}