2017-09-04 21 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