我尝试使用 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/