Tengo una advertencia múltiple persistente de "columna desconocida" para todos los tipos de comandos (por ejemplo, str (x) para instalar actualizaciones en paquetes), y no estoy seguro de cómo depurar esto o solucionarlo.
La "columna desconocida" de advertencia está claramente relacionada con una variable en un tbl_df que renombré, pero la advertencia aparece en todo tipo de comandos que aparentemente no están relacionados con el tbl_df (por ejemplo, instalar actualizaciones en un paquete, str (x) donde x es simplemente un vector de caracteres).
FACEBOOK.1
una columna en uno de sus data.frames y lo llama condf$FACEBOOK.1
algún lugar en su script R? Mi humilde suposición es que este es un error en eltibble
paquete presentado en v1.1: blog.rstudio.org/2016/07/05/tibble-1-1 . ¿Hastibble
cargado explícitamente?Respuestas:
Este es un problema con la herramienta de diagnóstico en RStudio (la herramienta que muestra advertencias y posibles errores en su código). Se solucionó parcialmente en este commit en RStudio v1.1.103 o posterior por @ kevin-ushey . La solución es parcial, porque las advertencias aún aparecen (aunque con menos frecuencia). Este problema se ha informado con un ejemplo reproducible en https://github.com/rstudio/rstudio/issues/7372 y se ha solucionado en la solicitud de extracción RStudio v1.4 (que se lanzará)
Hay varias soluciones disponibles, elija la solución que prefiera:
Deshabilite el diagnóstico de código para todos los archivos en Preferencias / Código / Diagnóstico
Deshabilite todos los diagnósticos para un archivo específico:
Agregue al comienzo de los archivos abiertos:
Luego guarde los archivos y las advertencias deberían dejar de aparecer.
Deshabilite los diagnósticos para las variables que causan la advertencia.
Agregue al comienzo de los archivos abiertos:
Luego guarde los archivos y las advertencias deberían dejar de aparecer.
Las advertencias aparecen porque la herramienta de diagnóstico en RStudio analiza el código fuente para detectar errores y cuando realiza las verificaciones de diagnóstico accede a columnas en su tibble que no están inicializadas, dando la Advertencia que vemos. Las advertencias no aparecen porque ejecuta cosas no relacionadas, aparecen cuando se ejecutan los diagnósticos de RStudio (cuando se guarda un archivo, luego se modifica, cuando ejecuta algo ...).
fuente
He estado encontrando el mismo problema, y aunque no sé por qué ocurre, he podido precisar cuándo ocurre, y así evitar que suceda.
El problema parece ser la adición de una nueva columna, derivada de la indexación, en un marco de datos base R frente a un marco de datos tibble. Tome este ejemplo, donde agrega una nueva columna (
age
) a un marco de datos base R:Eso funciona sin devolver una advertencia. Pero cuando se hace lo mismo con un tibble, arroja una advertencia (y, en consecuencia, creo que causa el extraño, aparentemente no provocado, problema de advertencia múltiple):
Seguramente hay mejores maneras de evitar esto, pero he descubierto que crear un vector de
NA
s hace el trabajo:fuente
tbl_df
parece ser necesario para producir las advertencias, pero no estoy seguro de que sea suficiente. Es decir, creo que esta advertencia podría surgir cuandotbl_df
se usan s junto con funciones de otros paquetes tidyverse (por ejemplo, tidyr, dplyr). Pequeño precio a pagar por un paquete tan crítico de paquetes, pero no obstante extraño / molesto.NA
s funcionó para mí! (RStudio Versión 1.1.456, R versión 3.5.1)NA
, las fechas que se completan más tarde se convertirán al tipo numérico.as.Date(NA_character_)
daNA
con claseDate
.Me he enfrentado a este problema al usar el paquete "dplyr".
Para aquellos que enfrentan este problema después de usar la función "group_by" en la biblioteca "dplyr":
Descubrí que desagrupar las variables resuelve el problema de advertencia de columna desconocida. A veces he tenido que repetir la desagrupación varias veces hasta que se resuelve el problema.
fuente
Convertir la clase en
data.frame
resuelto el problema para mí:Tomó prestado el script parcial de @adts
fuente
Warning message: Unknown or uninitialised column: 'bad_column'
Tuve este problema al tratar las funciones tibble y lapply juntas. El tibble parecía guardar cosas como una lista dentro del marco de datos.
Lo resolví usando unlist antes de agregar los resultados de una función de lapply al tibble.
fuente
También me encontré con este problema, excepto a través de un tibble creado con un bloque dyplyr. Aquí hay una ligera modificación del código de sabre para mostrar cómo llegué al mismo error.
fuente
Digamos que quería seleccionar las siguientes columnas.
Para mí lo siguiente dio la advertencia:
Si bien esto funcionó como se esperaba, aunque, hasta donde yo sé
dplyr
, esto debería ser idéntico.fuente
Recibo estas advertencias cuando cambio el nombre de una columna usando
dplyr::rename
después de leerla usando elreadr
paquete.El nombre antiguo de la columna no se renombra en el
spec
atributo. Entonces, eliminar elspec
atributo hace que las advertencias desaparezcan. También eliminar la clase "spec_tbl_df" parece una buena idea.fuente