我想使用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
之类的功能,但我现在无法找到它。有人有提示吗?
答案 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, .)