传递变量以在函数内部进行赋值

时间:2019-02-04 18:44:42

标签: r function data.table

我有几个具有相同变量的数据表,需要整理大量数据。我曾想过要创建一个函数,但是我在努力传递变量名,该变量名显示在:=分配的两侧。

查看带有mtcars的MWE,其中要更改的变量为wt。我尝试了substituteeval,但无济于事。

我如何使以下代码正常工作?缺什么?为什么这个不起作用?

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")

1 个答案:

答案 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)
}

Source 1 (Matt Dowle's answer)

Source 2