[英]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
我想用我的 function 命名幾個列名。
這是一個示例 function。
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
但是,function 結果不是“var_AAA”,而是“variableName”。 如何根據 function 中的字符串參數分配名稱?
除了包含新列名的字符值之外,我可能會考慮將整個 data.table 傳遞給 function。 這可能比更改全局環境 object 更好。 此外,您可以使用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")[]
Output
a b var_AAA
1: 1 4 8
2: 2 5 20
3: 3 6 36
將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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.