Я не уверен, что это то, что вы хотите.Но если вы пытаетесь разобраться с warnings
из geom_bar
относительно NA
с, вы можете заметить из документации (help("geom_bar")
), что функция имеет аргумент na.rm
.Таким образом, функция может удалить NA
с для вас.Попробуйте
ggplot(df,aes(x=test,fill=value)) +
geom_bar(position=position_dodge(preserve="single"), na.rm = TRUE)
Делает ли это то, что вы хотите?
Так что вам не обязательно нужно удалять NA в df
.
EDIT : В противном случае функция complete.cases
может помочь вам:
df <- data.frame(x = c(1, NA, 3, 4), value = c(1, 2, 3, 4), fill= c(1, 2, NA, 4))
print(df)
# x value fill
#1 1 1 1
#2 NA 2 2
#3 3 3 NA
#4 4 4 4
ccol <- c("value", "fill") # Cols to keep 'complete'
df_complete <- df[complete.cases(df[, ccol]), ]
print(df_complete)
# x value fill
#1 1 1 1
#2 NA 2 2
#4 4 4 4
Выполнение complete.cases(x)
возвращает логический вектор с TRUE
, где NA
s не появляется в строках x
.
В качестве альтернативы, используя tidyverse
/ dplyr
, нужно сделать что-то вроде следующего
df_complete2 <- df %>% filter(!is.na(fill) & !is.na(value))
.