【问题标题】:How do I create new variable names using argument in my function in R?如何在 R 中的函数中使用参数创建新变量名?
【发布时间】:2021-04-25 22:30:18
【问题描述】:

这是一个数据集。

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){
  
  variableName1 <- eval(paste0("variableName1_", x))
  variableName2 <- eval(paste0("variableName2_", x))
  
  print(variableName1)
  
  #setNames(variableName)
  
  df_1a <- df[, `:=` (variableName1 = a * b * 1,
                      variableName2 = a * b * 2)]
  
}

例如,这是f_test("AAA")的预期结果

   a b variableName1_AAA variableName2_AAA
1: 1 4                 4                 8
2: 2 5                10                20
3: 3 6                18                36

但是,函数结果不是“variableName1_AAA”,而是“variableName1”。

如何根据函数中的字符串参数分配名称?我需要分配名称字符以在将来的功能工作中使用。

【问题讨论】:

  • 当我将其更改为您的建议时,该功能不起作用。

标签: r


【解决方案1】:

我们可以直接使用paste 来创建列名,因为输入是一个字符串。分配 (:=) 也可以通过在:= 的 lhs 上连接列名对象来完成

f_test <- function(x){

  variableName1 <- paste0("variableName1_", x)
  variableName2 <- paste0("variableName2_", x)

  df_1a <- copy(df)

  df_1a[, c(variableName1, variableName2) := .( a * b * 1,
                   a * b * 2)][]
  
                 

 }

-测试

f_test("AAA")
#   a b variableName1_AAA variableName2_AAA
#1: 1 4                 4                 8
#2: 2 5                10                20
#3: 3 6                18                36

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 2019-08-25
    • 1970-01-01
    • 2021-01-26
    • 2014-09-22
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多