我有18对变量,想对它们进行成对数学计算,以计算出18个新变量。在对一列应用公式时,dplyr中的across()函数非常方便。有没有一种方法可以将across()应用于成对的列?
这里有一个简单的除法示例(我的实际代码会更复杂,包括一些ifelse等条件判断):
这里有一个简单的除法示例(我的实际代码会更复杂,包括一些ifelse等条件判断):
library(tidyverse)
library(glue)
# filler data
df <- data.frame("label" = c('a','b','c','d'),
"A" = c(4, 3, 8, 9),
"B" = c(10, 0, 4, 1),
"error_A" = c(0.4, 0.3, 0.2, 0.1),
"error_B" = c(0.3, 0, 0.4, 0.1))
# what I want to have in the end
# instead of just 2 (A, B), I have 18
df1 <- df %>% mutate(
'R_A' = A/error_A,
'R_B' = B/error_B
)
# what I'm thinking about doing to use both variables A and error_A to calculate the new column
df2 <- df %>% mutate(
across(c('A','B'),
~.x/{HOW DO I USE THE COLUMN WHOSE NAME IS glue('error_',.x)}
.names = 'R_{.col}'
)
across()
创建了两个tibbles
,然后将它们相除。赞。 - TimTeaFan