考虑以下代码:
library(dplyr)
a = data.frame(a = 1:3)
abc = \(x) data.frame(x/2, x/3)
a %>%
mutate(abc(a))
返回
a x.2 x.3
1 1 0.5 0.3333333
2 2 1.0 0.6666667
3 3 1.5 1.0000000
但我无法控制名称,因为我想为它们分配其他名称。
解决这个问题的一种方法是将返回类型abc
命名为,但这并不理想,因为我可能想要abc
在两组变量上运行
a %>%
mutate(abc(a), abc(b))
另一种方法当然是rename
在每次运行后都进行,abc
但这可能会不稳定。
有没有办法给输出命名abc
?例如
a %>%
mutate(c("a1","a2") := abc(a), c("b1","b2") := abc(b))
但上述:=
语法不起作用。
尝试
.unpack=
的参数across
。这abc
是问题中未修改的函数。或者可能是这种变体:
一种选择是添加一个可选参数来命名输出和/或根据输入列的名称设置输出的名称,例如:
我觉得这很奇怪;就像你最好先重组你的数据,但如果没有更多的背景信息,我就不能肯定地说。
这只是一个基本的 R 选项,您可以使用
lapply
+unname
来as.data.frame
实现您的目标,只需数据
也许
mutate
这不是正确的做法。为什么不使用bind_cols()
andrename()
?(
group_by
添加只是为了证明这即使对于分组数据也有效)也许是自定义
mutate
函数?不过我个人更喜欢anjama 的解决方案,它实际上做了同样的事情,但在常规变异中。