Eliminar los niveles de factor no utilizados de un gráfico de barras ggplot

Quiero hacer lo contrario deesta pregunta, y algo de lo contrario deesta pregunta, aunque se trata de leyendas, no de la trama en sí.

Las otras preguntas de SO parecen estar preguntando acerca de cómomantener Niveles de factor no utilizados. De hecho, me gustaría quitar la mía. Tengo varias variables de nombre y varias columnas (formato ancho) de atributos de variable que estoy usando para crear numerosos gráficos de barras. Aquí hay un ejemplo reproducible:

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()

Entiendo esto:

Me gustaría solo los nombres que tienen var correspondientenAparece en el gráfico de barras (como en, no habría espacio vacío para B).

Reutilizar el código de trazado de la base será bastante fácil si simplemente puedo cambiar el nombre del archivo de salida yy=var poco. ¡Me gustaría no tener que subcontratar mi marco de datos solo para usar niveles de carga en el resultado para cada gráfico si es posible!

Actualización basada en elna.omit() sugerencia

Considere un conjunto de datos revisados:

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()

Necesito usarna.omit() para trazarvar1 porque hay un presente de NA Pero como na.omit se asegura de que los valores estén presentes paratodas las columnas, la trama quitaA así como tiene una NA envar3. Esto es más análogo a mis datos. Tengo 15 respuestas en total con NAs salpicadas. Solo quiero eliminar los niveles de factor que no tienen valores para elcorriente Y graficado vector, no que tienen NA enalguna Vector en todo el marco de datos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta