如何在 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
这是一个数据集。
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