Вот еще несколько вариантов
Использование базы R
df[!is.na(sapply(df, `[`, 1))]
Или с dplyr
library(dplyr)
df %>% select_if(~!is.na(.[1L]))
# B
#1 2
#2 2
#3 NA
#4 2
Использование purrr
вариантов
purrr::discard(df, ~is.na(.[1L]))
purrr::keep(df, ~!is.na(.[1L]))