访问mutate_at()中的列名

时间:2017-09-04 11:14:38

标签: r dplyr

我正在尝试在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]这样的内容时,我会收到错误消息。它没有继承列名,我无法弄清楚如何访问它们。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:3)

我们可以使用base R方法

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

如果我们需要使用tidyverse

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