J'essaie de lire un fichier .csv dans R et en utilisant cette formule:
pheasant<-read.table(file.choose(),header=TRUE,sep=",")
Je reçois ce message d'avertissement:
"incomplete final line found by readTableHeader on 'C:\Documents and Settings..."
Il y a deux ou trois choses que je pensais avoir causé cet avertissement, mais malheureusement, je ne sais pas assez sur R pour diagnostiquer moi-même le problème, alors j'ai pensé publier ici dans l'espoir que quelqu'un d'autre puisse le diagnostiquer pour moi!
- le fichier .csv était à l'origine un fichier Excel, que j'ai enregistré au format .csv
- le fichier comprend trois colonnes de données
- chaque colonne de données a une longueur différente, c'est-à-dire qu'il y a un nombre différent de valeurs dans chaque colonne
- Je veux comparer les moyennes (en utilisant un test t ou équivalent en fonction de la distribution normale / non normale) de deux des colonnes à la fois, donc par exemple, test t entre les valeurs de la colonne 1 et les valeurs de la colonne 2, puis un t- test des valeurs de la colonne 1 et de la colonne 3, etc.
Toute aide ou suggestion serait sérieusement appréciée!
r
line-endings
read.csv
Kate
la source
la source
Réponses:
Le message indique que la dernière ligne du fichier ne se termine pas par un caractère de fin de ligne (EOL) (saut de ligne (
\n
) ou retour chariot + saut de ligne (\r\n
)). L'intention initiale de ce message était de vous avertir que le fichier est peut-être incomplet; la plupart des fichiers de données ont un caractère EOL comme tout dernier caractère du fichier.Le remède est simple:
la source
Le problème est facile à résoudre; c'est parce que la dernière ligne DOIT être vide.
Dites, si votre contenu est
changez-le en
Aujourd'hui, j'ai rencontré ce genre de problème, lorsque j'essayais d'utiliser R pour lire un fichier JSON, en utilisant la commande ci-dessous:
json_data<-fromJSON(paste(readLines("json01.json"), collapse=""))
; et je le résous par ma méthode ci-dessus.
la source
Warning message: In readLines(file) : incomplete final line found on 'apiAnaheim.R'
l'avertissement a été résolu en ajoutant une ligne vide à la fin. Je ne sais pas pourquoi cela se produit.Êtes-vous vraiment sûr d'avoir sélectionné le fichier .csv et non le fichier .xls? Je ne peux reproduire l'erreur que si j'essaye de lire dans un fichier .xls. Si j'essaie de lire un fichier .csv ou tout autre fichier texte, il est impossible de recréer l'erreur que vous obtenez.
readTableHead
est la fonction c qui donne l'erreur. Il essaie de lire les n premières lignes (standard les 5 premières) pour déterminer le type des données. Le reste des données est lu en utilisantscan()
. Le problème est donc le format du fichier.Une façon de le savoir est de définir le répertoire de travail sur le répertoire où se trouve le fichier. De cette façon, vous voyez l'extension du fichier que vous avez lu. Je sais que sur Windows, il n'est pas affiché en standard, donc vous pourriez croire que c'est csv alors que ce n'est pas le cas.
La prochaine chose à faire est d'ouvrir le fichier dans le Bloc-notes ou Wordpad (ou dans un autre éditeur) et de vérifier que le format est équivalent à mon fichier
test.csv
:Ce fichier vous donnera le dataframe suivant:
Le format csv enregistré par Excel sépare toutes les cellules par une virgule. Les cellules vides n'ont tout simplement pas de valeur.
read.table()
peut facilement gérer cela et reconnaît très bien les cellules vides.la source
Utilisez
readLines()
(avecwarn = FALSE
) pour lire d'abord le fichier dans un vecteur de caractères.Ensuite, utilisez l'
text =
option pour lire le vecteur dans un bloc de données avecread.table()
la source
Je me suis rendu compte que plusieurs réponses avaient été apportées mais pas encore de véritable solution.
La raison, comme mentionné ci-dessus, est un "Fin de ligne" manquant à la fin du fichier CSV.
Alors que le vrai correctif devrait provenir de Microsoft, la marche à suivre consiste à ouvrir le fichier CSV avec un éditeur de texte et à ajouter une ligne à la fin du fichier (aka appuyez sur la touche Retour). J'utilise le logiciel ATOM comme éditeur de texte / code, mais pratiquement tous les éditeurs de texte de base feraient l'affaire.
En attendant, veuillez signaler le bogue à Microsoft.
Question: Il me semble que c'est un problème de bureau 2016. Quelqu'un a-t-il le problème sur un PC?
la source
J'ai reçu le même message. Mon correctif inclus: J'ai supprimé toutes les feuilles supplémentaires (onglets) dans le fichier .csv, éliminé les caractères non numériques, réenregistré le fichier comme délimité par des virgules et chargé dans R v 2.15.0 en utilisant la langue standard:
Comme protection supplémentaire, j'ai fermé le logiciel et rouvert avant de charger le csv.
la source
Dans divers paramètres régionaux européens, comme la virgule sert de point décimal, la fonction read.csv2 doit être utilisée à la place.
la source
J'ai résolu ce problème en changeant le codage dans l'argument read.table de fileEncoding = "UTF-16" à fileEncoding = "UTF-8".
la source
Le problème que vous décrivez s'est produit pour moi lorsque j'ai renommé un fichier en tant
.xlsx
que.csv
.Ce qui a résolu le problème pour moi, c'était de "Enregistrer sous", puis de le sauvegarder en tant que
.csv
nouveau.la source
J'ai eu ce problème une fois lorsque j'avais un guillemet simple dans l'en-tête. Lorsque je l'ai supprimé (c'est-à-dire renommé l'en-tête de colonne respectif de
Jimmy's data
àJimmys data
), la fonction n'a renvoyé aucun avertissement.la source
Pour résoudre ce problème via R lui-même, je viens d'utiliser à la
read.xlsx(..)
place d'un fichierread.csv()
. Fonctionne comme un charme !! Vous n'avez même pas besoin de renommer. Renommer un xlsx en csv n'est pas une solution viable.la source
Ouvrez le fichier dans text wrangler ou notepad ++ et montrez le formatage, par exemple dans text wrangler, vous montrez des invisibles. De cette façon, vous pouvez voir la nouvelle ligne ou les caractères des tabulations. Souvent, Excel ajoutera toutes sortes d'onglets aux mauvais endroits et non un dernier caractère de nouvelle ligne, mais vous devez afficher les symboles pour le voir.
la source
Mon travail consiste à ouvrir le
csv
fichier dans un éditeur de texte, à supprimer les virgules excessives sur la dernière valeur, puis à enregistrer le fichier. Par exemple pour le fichier suivantSupprimez les virgules après 6, puis enregistrez le fichier.
la source
J'ai rencontré un problème similaire, mais cela semble être un avertissement générique, et peut en fait ne pas être lié au caractère de fin de ligne. Dans mon cas, cela donnait cette erreur car le fichier que j'utilisais contenait des caractères cyrilliques, une fois que je les ai remplacés par des caractères latins, l'erreur a disparu.
la source
J'ai essayé différentes solutions, telles que l'utilisation d'un éditeur de texte pour insérer une nouvelle ligne et obtenir le caractère de fin de ligne comme recommandé dans la réponse du haut ci-dessus. Aucun de ceux-ci n'a fonctionné, malheureusement.
La solution qui a finalement fonctionné pour moi était très simple: j'ai copié-collé le contenu d'un fichier CSV dans un nouveau fichier CSV vierge, je l'ai enregistré et le problème a disparu.
la source