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

标签 r dplyr

我尝试使用 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 和 D,然后执行一些计算并返回一个向量,我想将其附加到原始数据帧。

但是上述实现失败。

您能否帮助我了解如何使用 rowwise() 函数来执行上述计算?上面的应用函数示例相当简单,但是在我原来的情况下,这样的函数非常复杂。另外,我不喜欢独立定义该函数,而是想在 mutate 中动态定义以保持代码整洁。

任何指针都会非常有帮助。

最佳答案

如果我们需要创建一个返回向量列表tibble的函数

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

关于r - 应用在 dplyr::rowwise() 之后返回多个值的自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74844356/

相关文章:

r - 如何使用 dplyr `across()` 语法过滤全部为 NA 的行?

r - dplyr::mutate 中的非标准评估

r - 由于 Excel 的原因,长数字字段不会存储数字字符串。 Excel Office Professional 2013 将数字转换为四舍五入数字

r - 对称直方图

r - 如何使向量中的特定因子的水平高于其他所有因子?

R散点图: symbol color represents number of overlapping points

R - read.table 导入数据集的一半 - 没有错误或警告

R - dplyr - 运行许多非常相似的查询的代码......?

R dplyr 加入日期范围

r - 如果 R 中另一列中的值是连续的,则追加列的值