У меня есть вложенный фрейм данных, и я хотел бы получить номера строк, которые не являются NA для каждого столбца в дочернем фрейме данных, следующим образом (упрощенная версия):
df <- list(
tibble(a=c(1, 2, NA_real_, 4, 5), b=c(2, NA_real_, 5, NA_real_, 3)),
tibble(a=c(NA_real_, 2, 3, NA_real_, 5), b=c(NA_real_, NA_real_, NA_real_, 1, 3))
) %>%
tibble(x=1:2, y=.)
res <- df %>%
mutate(z=map(y, function(dat){
c(a="a", b="b") %>% map_int(function(col){
dat %>% filter(!is.na(!!sym(col))) %>% nrow()
}) %>% enframe()
}))
Когда я запускаю код Я получаю сообщение об ошибке: Error: Only strings can be converted to symbols
. Кажется, что col
внутри функции не распознается.
Почему происходит такое поведение?