2017-06-14 73 views
1

我想使用dplyr将新列添加到data.frame。一个接一个很容易使用mutate。但是,我有一种情况,我有一个函数可以根据其他列计算几个参数,我想一次将它们添加到表中。假设我有一个功能dplyr批量计算新列

f = function(x) {data.frame(A = x + 1, B = x + 2, C = x + 3)} 

而且我想对运行在data.frame列这一功能,并将结果添加到同一data.frame,所以

df = data.frame(x = 1:10) 
df %>% XXX(f(x)) 

会导致数据.frame这样的:

x A B C 
1 2 3 4 
2 3 4 5 
3 4 5 6 
4 5 6 7 
5 6 7 8 
6 7 8 9 
7 8 9 10 
8 9 10 11 
9 10 11 12 
10 11 12 13 

我知道我已经读到像上面的例子XXX功能,但我无法立即找到它。任何人都有提示?

回答

4

我们可以使用do

library(dplyr) 
df %>% 
    do(data.frame(., f(.$x))) 
# x A B C 
#1 1 2 3 4 
#2 2 3 4 5 
#3 3 4 5 6 
#4 4 5 6 7 
#5 5 6 7 8 
#6 6 7 8 9 
#7 7 8 9 10 
#8 8 9 10 11 
#9 9 10 11 12 
#10 10 11 12 13 

或者

library(purrr) 
df %>% 
    map_df(f) %>% 
    bind_cols(df, .)