【问题标题】:Accessing column names in mutate_at()在 mutate_at() 中访问列名
【发布时间】:2017-09-04 11:14:37
【问题描述】:

我正在尝试对 R 中数据框的多列应用相同的函数。

我有一个单独的数据框,其中包含主数据框中的一些列。当主数据框中的列在另一个数据框中时,我想将这两列加在一起,但我似乎无法弄清楚如何访问 mutate_at() 列表中的每个列名。

# random secondary data frame
random <- data.frame(y = rnorm(30, 10), x = rnorm(30, 1), z = rnorm(30, -5))

# master dataframe
fixed <- data.frame(y = rnorm(30, 10), x = rnorm(30, 10), z = rnorm(30, 10), a = rnorm(30, 10))

# trying to add the random secondary values to the master data frame
d <- dplyr::mutate_at(fixed, c('y', 'x', 'z'), function(x){x + random$x})

我可以为每一列添加一列,但是当我尝试像x + random[, colnames(random) == x] 这样的东西时,我得到一个错误。它没有继承列名,我不知道如何访问它们。

有人有什么想法吗?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以使用base R 方法

    fixed[names(random)] <- random + fixed[names(random)]
    

    如果我们需要使用tidyverse

    library(tidyverse)
    fixed %>% 
        select(names(random)) %>%
        map2_df(., random, ~.x + .y)
    

    【讨论】:

    • 因此,如果您将 funs 更改为 `funs(. + random$.) 更改您的答案,我将给予荣誉。非常感谢。
    • @DanielPadfield 如果要将相应的列添加在一起,请使用map2_df from purrr`
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2015-08-08
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多