【发布时间】:2021-03-01 06:44:50
【问题描述】:
我正在尝试将 col 与我的数据中的 col_new 进行比较,并创建一个名为 change_col 的新布尔标识符来标识更改。
下面是一个例子:
input <- data.frame(
apple = c(1,2)
,apple_new = c(2,3)
,banana = c(1,2)
,banana_new = c(1,3)
)
desired_output <- data.frame(
apple = c(1,2)
,apple_new = c(2,3)
,change_apple = c(TRUE,TRUE)
,banana = c(1,2)
,banana_new = c(1,3)
,change_banana = c(FALSE,TRUE)
)
我正在考虑使用 mutate 和 cross 来循环苹果和香蕉,但有点失败......谁有更好的主意?
library(dplyr)
var_to_consider <- c('apple','banana')
input %>%
mutate( across(c(var_to_consider),
.fns = list(change = ~ . != !!sym(paste0(.,'_new') )),
.names = "{fn}_{col}" ) )
以上将导致以下错误:
Error: Only strings can be converted to symbols
【问题讨论】: