在dplyr::rowwise()后应用返回多个值的自定义函数

6l7fqoea  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(123)

我尝试使用dplyr::rowwose()对每行应用一个定制函数,如下所示

library(dplyr)
dat = data.frame('A' = 1:3, 'C' = 1:3, 'D' = 1:3, 'M' = 1:3)
dat %>%
    rowwise() %>%
    mutate(c('A1', 'A2') = function(x) {c('A' + 5, 'D')})

这里,我的自定义函数获取列A and D,然后执行一些计算并返回一个向量,我想将其附加到原始数据框中。
然而,上述实施失败。
你能帮助我了解一下如何使用rowwise()函数来执行上面的计算吗?上面的应用函数的例子相当简单,但是在我最初的例子中,这样的函数相当复杂。而且,我不喜欢单独定义这个函数,而是希望在mutate中动态定义,以保持我的代码整洁。
任何指针都会很有帮助。

6qftjkof

6qftjkof1#

如果我们需要创建一个返回vectorlisttibble的函数

library(dplyr)
library(tidyr)
f1 <- function(x, y) tibble(A1 = x + 5, A2 = y + 1)
dat %>% 
   mutate(Anew = f1(A, D)) %>%
   unnest_wider(Anew)
# A tibble: 3 × 6
      A     C     D     M    A1    A2
  <int> <int> <int> <int> <dbl> <dbl>
1     1     1     1     1     6     2
2     2     2     2     2     7     3
3     3     3     3     3     8     4

相关问题