【问题标题】:dplyr calculate new columns in batchdplyr 批量计算新列
【发布时间】:2017-06-14 20:28:46
【问题描述】:

我想使用 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 之类的函数,但我现在无法找到它。有人有提示吗?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以使用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, .)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2018-05-06
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多