199 votes

Fixant un multiple avertissement « unknown column »

J’ai un persistant plusieurs avertissement de « unknown column » pour tous les types de commandes (par exemple, str(x) pour l’installation des mises à jour sur les emballages) et ne savez pas comment déboguer cela ou réparer.

L’avertissement « colonne inconnu » est clairement liée à une variable dans une tbl_df que j’ai renommé, mais l’avertissement vient dans toutes sortes de commandes apparemment sans rapport avec la tbl_df (p. ex., installation updates sur un paquet, str(x), où x est simplement un vecteur de caractère).

70voto

zeehio Points 51

Mise à jour: Ce problème a été partiellement résolu à présent s'engager dans RStudio v1.1.103 ou plus tard par @kevin-ushey. Il apparaît encore (mais avec moins de fréquence).

C'est un problème avec l'outil de Diagnostic dans RStudio (l'outil qui affiche des avertissements et des erreurs dans votre code).

https://support.rstudio.com/hc/en-us/community/posts/115001180488-Diagnostics-and-tibble-warning

Comme solution de contournement, vous pouvez ajouter au début du fichier ouvert(s):

# !diagnostics off

Puis enregistrez les fichiers et les mises en garde doivent cesser d'apparaître.

Vous pouvez aussi désactiver les diagnostics dans les Préférences/Code/Diagnostics.

Je crois que les mises en garde apparaissent parce que l'outil de diagnostic dans RStudio analyse le code source pour détecter les erreurs, et quand il effectue des tests de diagnostic de l'accès à des colonnes dans votre tibble qui ne sont pas initialisés, donnant l'Avertissement nous voir. Les avertissements n'apparaissent pas parce que vous exécutez sans rapport avec les choses, ils apparaissent lorsque l'RStudio diagnostics sont exécutés (lorsqu'un fichier est enregistré, puis modifié, lorsque vous exécutez quelque chose...).

61voto

sabre Points 343

J'ai rencontré le même problème, et bien que je ne sais pas pourquoi il se produit, j'ai été en mesure de déterminer quand il se produit, et donc l'empêcher de se produire.

Le problème semble être avec l'ajout d'une nouvelle colonne, dérivé de l'indexation, dans une base de R bloc de données, par opposition à un tibble bloc de données. Prenez cet exemple, lorsque vous ajoutez une nouvelle colonne (age) à une base de R bloc de données:

base_df <- data.frame(id = c(1:3), name = c("mary", "jill","steve"))

base_df$age[base_df$name == "mary"] <- 47

Qui fonctionne sans avoir à retourner un message d'avertissement. Mais lorsque l'on fait de même avec un tibble, il lance un avertissement (et, par conséquent, je pense que l'origine du bizarre, apparemment sans provocation, plusieurs avertissements de l'émission):

library(tibble)

tibble_df <- tibble(id = c(1:3), name = c("mary", "jill","steve"))

tibble_df$age[tibble_df$name == "mary"] <- 47

Warning message:
Unknown column 'age' 

Il y a sûrement de meilleures façons d'éviter cela, mais j'ai trouvé que la première création d'un vecteur de NAs fait le travail:

tibble_df$age <- NA

tibble_df$age[tibble_df$name == "mary"] <- 47

20voto

Varun Points 150

J’ai rencontré ce problème lorsque vous utilisez le paquet « dplyr ».
Pour ceux confrontés à ce problème après avoir utilisé la fonction « group_by » dans la bibliothèque « dplyr » :

J’ai trouvé que dissocier les variables résout le problème de mise en garde de colonne inconnu. Parfois, j’ai eu à parcourir les dissocier plusieurs fois jusqu'à ce que le problème soit résolu.

6voto

stok Points 154

Convertir la classe en `` a résolu le problème pour moi :

Emprunté le script partiel de @adts

1voto

adts Points 51

Je suis tombé sur ce problème trop sauf à travers une tibble créé à l’aide d’un bloc de dyplyr. Voici légère modification du code de sabre pour montrer comment je suis arrivé à la même erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X