如何在 R 函数中使用参数名称创建列名称?

How can I make column name using argument name in a function in R?

这是一个数据集。

require(data.table) 
df <- data.table(a = c(1, 2, 3),
b = c(4, 5, 6))
   a b
1: 1 4
2: 2 5
3: 3 6

我想用我的函数做几个列名。

这是一个示例函数。

f_test <- function(x){
  
  variableName <- eval(paste0("var_", x))
  
  df_1a <- df[, variableName := a * b *2 ]
}

例如,这是 f_test("AAA")

的预期结果
   a b var_AAA
1: 1 4     8
2: 2 5    20
3: 3 6    36

然而,函数结果不是'var_AAA',而是'variableName'。 如何根据函数中的字符串参数分配名称?

结合变量名使用c()

library(data.table)

df <- data.table::data.table(a = 1:3, b = 1:3)

f_test <- function(x){
  variableName <- eval(paste0("var_", x))
  df[, c(variableName) := a * b *2 ][]
}

f_test("AAA") 

除了包含新列名的字符值外,我可能会考虑将整个 data.table 传递给函数。这可能比更改全局环境对象更好。此外,您可以只使用 paste0 通过引用 :=.

创建列名
library(data.table)

dt <- data.table(a = c(1, 2, 3), b = c(4, 5, 6))

f_test <- function(dt, var_name) {
  dt[ , paste0("var_", var_name) := a * b * 2]
  return(dt)
}

f_test(dt, "AAA")[]

输出

   a b var_AAA
1: 1 4       8
2: 2 5      20
3: 3 6      36