【问题标题】:Use variable name to define column contents with mutate使用变量名定义列内容与 mutate
【发布时间】:2016-10-04 03:55:13
【问题描述】:

我有一个这样定义的数据框:

dfB  <-  data.frame("_ID0" = c("z1", "z2", "z3"), check.names = FALSE)

我想添加一列,如下所示:

dfB %>% mutate(fk_table = "dfB")

不用硬编码"dfB",如何动态计算?

我在这里找到了一个示例,它使用 mutate 动态计算列名,但不使用传递的变量的名称。

R: Add new column to dataframe using function

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以在函数中使用substitute

    f1  <- function(dat) {
              name <- deparse(substitute(dat))
              #or
              #name <- as.character(match.call()[-1])
    
              dat %>%
                   mutate(fk_table = name)
     }
    
    f1(dfB)
    #  _ID0 fk_table
    #1   z1      dfB
    #2   z2      dfB
    #3   z3      dfB
    

    【讨论】:

    • 这个解决方案完全符合我的要求,但现在我想在dplyr 命令链中使用它。有没有办法使这项工作? dfB %&gt;% f1()
    • 感谢@agenis,这正是我在您撰写评论时测试的内容!
    • 我是否需要将所有内容都放在f1 中,并且在这种情况下,每当我想进行更改时总是创建一个新的临时函数?还是有另一种可能?也许我应该先在基础R 中添加必要的列,然后再开始使用dplyr 命令?
    • @Bobby 我认为您可以使用该函数创建变量,然后使用%&gt;% 进行任何其他计算。我不确定如何使用dfB %&gt;% f1
    猜你喜欢
    • 2018-05-06
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多