Remova níveis de fator não utilizados de um gráfico de barras ggplot

Eu quero fazer o opostoessa questãoe meio que o oposto deessa questão, embora seja sobre lendas, não o enredo em si.

As outras perguntas do SO parecem estar perguntando sobre comomanter níveis de fator não utilizados. Eu realmente gostaria que o meu fosse removido. Eu tenho várias variáveis ​​de nome e várias colunas (formato amplo) de atributos de variáveis ​​que estou usando para criar vários gráficos de barras. Aqui está um exemplo reproduzível:

library(ggplot2)
df <- data.frame(name=c("A","B","C"), var1=c(1,NA,2),var2=c(3,4,5))
ggplot(df, aes(x=name,y=var1)) + geom_bar()

Eu entendi isso:

Eu gostaria apenas os nomes que têm var correspondentenaparece na minha trama de bar (como em, não haveria espaço vazio para B).

Reutilizar o código da base será muito fácil se eu puder simplesmente alterar o nome do arquivo de saída ey=var pouco. Eu gostaria de não ter que subconjunto meu quadro de dados apenas para usar droplevels no resultado para cada plot, se possível!

Atualizar com base nona.omit() sugestão

Considere um conjunto de dados revisado:

library(ggplot2)
df <- data.frame(name=c("A","B","C"), var1=c(1,NA,2),var2=c(3,4,5), var3=c(NA,6,7))
ggplot(df, aes(x=name,y=var1)) + geom_bar()

Eu preciso usarna.omit() para plotagemvar1 porque há um presente de NA. Mas desde na.omit garante que os valores estão presentes paratodas as colunas, o enredo removeA bem, uma vez que tem um NA emvar3. Isso é mais análogo aos meus dados. Eu tenho 15 respostas totais com NAs apimentado. Eu só quero remover os níveis de fator que não têm valores para oatual vetor plotado, não que tenha NAs emqualquer vector em todo o quadro de dados.

questionAnswers(2)

yourAnswerToTheQuestion