web-dev-qa-db-fra.com

Read.csv () génère une erreur

J'ai essayé de lire le fichier Excel, mais il me semble que quelque chose ne va pas. Le fichier est stocké dans le dossier Documents au format Excel.

Voici les messages d'erreur que je reçois:

table <- read.csv(file.choose(),header=T,sep='\t')

Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 1 appears to contain embedded nulls
2: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  incomplete final line found by readTableHeader on 

aussi, puisqu'il s'agissait d'avertissements, il m'est arrivé de les ignorer. Mais rien n’a été lu dans "table" non plus:

table
# [1] PK...
# <0 rows> (or 0-length row.names)
5
Minal Murkhande

read.csv ne lit pas les fichiers XLS (X), seulement les fichiers CSV. Essayez d’ouvrir votre fichier Excel dans Excel, de l’exporter au format CSV et de réémettre votre commande read.csv (en fonction de la langue de votre système, vous voudrez peut-être utiliser read.csv2 à la place).

9
Waldir Leoncio

J'ai eu une erreur similaire, par exemple:

A <- read.csv("tel.csv", sep = ",")
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  empty beginning of file
In addition: Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  invalid input found on input connection 'tel.csv'
2: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 1 appears to contain embedded nulls
3: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  incomplete final line found by readTableHeader on 'tel.csv'

Pour solution j'ai essayé: 

A <- read.csv("tel.csv", sep = ",",
              fileEncoding="utf-16")

Ça a marché.

6
Rafa

Si vous essayez de lire dans un fichier xlsx, utilisez la bibliothèque xlsx ou exportez-les au format csv. read.table ou read.csv ne fonctionneront pas pour les fichiers Excel.

install.packages("xlsx")
library(xlsx)
table <- read.xlsx("file.xlsx", 1)
2
blakeoft

Par définition, un fichier .csv a des valeurs séparées par des virgules; dans votre code R, vous utilisez la tabulation ("\ t") comme délimiteur. Si vous avez un fichier csv réel, vous devriez pouvoir entrer:

csvfile<-read.csv("csvfilename.csv")

ou bien

csvfile<-read.table("csvfilename.csv",sep=",")

bien que vraiment la première commande devrait suffire. Il est étrange que vous ayez à spécifier un onglet pour délimiter les colonnes d’un fichier csv, à moins que Excel n’ait fait quelque chose de malicieux pour votre table de données.

Vous pouvez toujours utiliser le paquetage xlsx dans R, puis écrire le fichier au format souhaité. 

1
user3482899

Tout d’abord, vérifiez que votre fichier CSV est bien un fichier CSV plutôt qu’un fichier Excel (vous indiquez que cela pourrait être le cas dans votre question). read.csv lit dans des fichiers texte délimités et ne peut pas gérer les fichiers Excel (.xls ou .xlsx).

S'il s'agit d'un fichier texte délimité, le message d'erreur ressemblera à votre fichier CSV (ainsi, le fichier de valeurs séparées par des tabulations) pourrait avoir des noms de colonnes vides que read.csv() est incapable de gérer.

Le second avertissement pense également que la dernière ligne de votre fichier est incomplète, ce qui peut être causé par le fichier en sortie destiné à combiner des séparateurs lorsque certains champs sont vides.

Ce sont des avertissements, car ils n'arrêtent pas le programme ou ne le quittent pas, mais ils disent que les choses pourraient ne pas être comme vous le souhaiteriez.

1
ydaetskcoR

Le fichier que vous essayez de lire peut être un fichier codé UTF-16 comme s'il ne l'était pas. Essayez avec l'argument fileEncoding = "UTF-16"

0
Alex Joseph

Une des causes possibles est la tentative accidentelle de charger un alias dans le fichier au lieu du fichier lui-même. Dans R pour Mac, essayer d'utiliser read.csv sur un alias donne l'erreur que vous avez.

0
Sandeep