dplyr批量计算新列

时间:2017-06-14 20:28:47

标签: r dplyr

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

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))

将导致data.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之类的功能,但我现在无法找到它。有人有提示吗?

1 个答案:

答案 0 :(得分: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, .)