簡體   English   中英

如何使用 R 中的 function 中的參數名稱來創建列名?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM