在我的 R 从 4.0 版更新到 4.1 版之前,我的以下代码运行良好,这是我为我正在开发的软件编写的辅助函数的一部分,我已经相应地替换了一些东西。没有上下文,这个功能似乎毫无意义,请不要专注于代码似乎试图在这里完成的事情。
input1 <- data.frame(a = as.numeric(c(0, NA, 0, 0, NA)),
b = as.factor(c("f", "f", NA, "f", NA)),
stringsAsFactors = FALSE)
input2 <- data.frame(a = as.numeric(1),
b = factor(c("m")),
c = factor(c("married")),
d = factor(c("AZ")),
e = as.character(0),
f = as.integer(59),
g = as.Date("2021-02-14"),
stringsAsFactors = FALSE
)
input2 <- input2 %>% dplyr::select( tidyselect::all_of( colnames(fake_data_) ) )
# error occurs here, in the second mutate
input1 %>%
dplyr::mutate(dplyr::across(.fns = as.character)) %>%
dplyr::mutate(dplyr::across( .cols = tidyselect::everything(),
.fns = ~eval(parse(text = paste0( "as.",
class( input2[[ dplyr::cur_column() ]]),
"(.)")))
))
我收到错误Error: Problem with `mutate()` input `..1`. i `..1 = dplyr::across(...)`. x 'list' object cannot be coerced to type 'double'
有人可以帮忙吗,在此先感谢!