2017-09-04 40 views
0

我试图在数据帧的多个列应用相同的功能在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]我得到一个错误。它没有包含列名,我无法弄清楚如何访问它们。

任何人有任何想法?

回答

3

我们可以。如果我们需要使用tidyverse

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

所以这个作品,如果你改变了的玩意儿来'玩意儿使用base R方法

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

(。+随机$)。改变你的答案,我会给予荣誉。谢谢一堆。 –

+0

@DanielPadfield如果您想要将相应的列添加在一起,请使用'purrr'中的map2_df – akrun