I am trying to select only the rows without NAs:
library(dplyr)
x = data.frame(a = c(NA, 2, 3, 4))
var_a <- \"a\"
# This works:
x %>% filter(!is.na(a))
Rather than referencing by name of column, just give it the entire column to filter by.
x = data.frame(a = c(NA, 2, 3, 4))
var_a <- "a"
x %>% filter(!is.na(!!x[,var_a]))
Noticed I've just changed var_a
to x[,var_a]
.
It is a string, so we can convert to symbol with sym
and then use !!
x %>%
filter(!is.na(!!rlang::sym(var_a)))
# a
#1 2
#2 3
#3 4
Or another option is to specify the object in filter_at
and then do the filtering
x %>%
filter_at(var_a, all_vars(!is.na(.)))
# a
#1 2
#2 3
#3 4