Я написал функцию для преобразования символьных переменных тиббла в факторы, провел некоторые манипуляции и затем снова преобразовал факторы в символы (если они были символами в первую очередь).Я хотел бы сделать это путем создания вызова.
library(tidyverse)
library(stringr)
library(rlang)
N <- 100
d <- tibble(a = sample(LETTERS[1:4], N, replace = TRUE),
b = sample(letters[20:23], N, replace = TRUE),
x = round(rnorm(N, 100, 20), 1),
y = as.numeric(sample(30:45, N, replace = TRUE)))
dplyr_xx <- function(d, ...) {
call_vec <- map_chr(d, ~str_c("as.", class(.), sep = ""))
d %>%
mutate_if(is.character, as_factor) %>%
# ... %>%
imap_dfc(., ~ .x %>%
exec(call_vec[.y])) # -> error
}
d %>%
dplyr_xx(a, x, y)
Как я могу исправить вышеуказанную функцию?