【发布时间】:2022-11-27 01:56:48
【问题描述】:
语境
假设我有一个 df,其中包含多个列(a1、a2、a3、a4、b1、b2、b3、b4)。
我想根据现有列生成一些新列 (c1,c2,c3,c4)。
现在,我可以通过一个一个地创建它来做到这一点。
df = data.frame(a1 = 1:2, a2 = 3:4, a3 = 5:6, a4 = 7:8,
b1 = 1:2, b2 = 3:4, b3 = 5:6, b4 = 7:8)
df %>%
mutate(c1 = a1 - b1,
c2 = a2 - b2,
c3 = a3 - b3,
c4 = a4 - b4)
问题
有没有一种方法可以同时生成c1、c2、c3和c4?
也许使用across()?
可重现的代码
df = data.frame(a1 = 1:2, a2 = 3:4, a3 = 5:6, a4 = 7:8,
b1 = 1:2, b2 = 3:4, b3 = 5:6, b4 = 7:8)
df %>%
mutate(c1 = a1 - b1,
c2 = a2 - b2,
c3 = a3 - b3,
c4 = a4 - b4)
# Maybe the way like this, though it cannot run correctly
df %>%
mutate(paste('c', 1:4) = paste('a', 1:4) - paste('b', 1:4))
【问题讨论】: