2014-07-14 11 views
13

Próbuję odczytać na liście plików CSV. Te pliki csv mają ";" jako jego separator. Po nieodczytaniu w plikach CSV, próbowałem wyciąć zawartość w jednym z plików CSV na kilka części i odczytać wartości w każdej części, aby zobaczyć, gdzie powstał problem.Komunikat ostrzegawczy: wiersz wydaje się zawierać osadzone wartości null

Metoda ta pracował dla mnie, a ja zorientowali się działający kod, który działa na przetwarzanie moich danych:

y <- data.table(read.table(filenames[i], header = FALSE, sep = ";", 
       comment.char = "", fill = TRUE, check.names = FALSE, 
       blank.lines.skip = TRUE)) 

Ale ja spotkałem inny problem. Kiedy kopiuję i wklejam oryginalne dane w pliku csv i uruchamiam kod, to po prostu działa dobrze. Jednak gdy próbuję uruchomić ten sam kod na oryginalnym pliku CSV, otrzymuję ostrzeżenie "osadzone wartości zerowe".

Na zewnątrz oryginalne dane i skopiowane dane wyglądają dokładnie tak samo i wszystkie są zapisane w formacie csv. Dlatego trudno jest mi znaleźć przyczynę ostrzeżenia i jaka jest różnica między moim oryginalnym plikiem csv a skopiowanym plikiem csv.

Dane wygląda podobnie jak poniżej:

Measurement Reports export file; 
; 
Comment;Time ;E_MW;E_PF;INV11_ACKW;INV12_ACKW;INV21_ACKW;INV22_ACKW;INV31_ACKW;INV32_ACKW;INV41_ACKW;INV42_ACKW;INV51_ACKW;INV52_ACKW;INV61_ACKW;INV62_ACKW;M1_ATEMP;M1_HUMID;M1_PYRA1S;M1_PYRA2S;M1_PYRA3S;M1_WDIREC;M1_WSPEED; 
; 
;00:00;-0.02 ;-0.36 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.32 ;82.32 ;0.00 ;0.00 ;0.00 ;234.83 ;0.00 ; 
;00:01;-0.02 ;-0.36 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.26 ;82.57 ;0.00 ;0.00 ;0.00 ;214.93 ;0.00 ; 
; 
;Sum;-1.41 ;-22.10 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;1330.89 ;5098.24 ;0.00 ;0.00 ;0.00 ;11246.06 ;28.48 ; 
;Mean;-0.02 ;-0.37 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;0.00 ;22.18 ;84.97 ;0.00 ;0.00 ;0.00 ;187.43 ;0.47 ; 
; 

Każda pomoc będzie mile widziane. Dziękuję Ci.

+1

może to być kwestia kodowania takie jak próba odczytać zakodowany plik UTF-16 tak, jakby nie był tak zakodowany. Spróbuj eksperymentować z argumentem 'fileEncoding ='. –

+1

Jeśli sugestia Gabora nie pomoże, być może trzeba będzie sprawdzić oryginalny plik za pomocą "edytora binarnego", aby zobaczyć, jakie znaki rzeczywiście tam są. –

+3

Dzięki za pomoc. Argument fileEncoding = był kluczem do odczytu moich danych. :) Dla mojego przypadku działały zarówno UTF-16LE, jak i UCS-2LE, więc zdecydowałem się użyć UCS-2LE. – user3634755

Odpowiedz

12

Rozwiązanie, które zamieszczono w komentarzu autorstwa @G. Grothendieck użył argumentu fileEncoding= do określenia poprawnego kodowania, które okazało się UTF16LE lub UCS-2LE zgodnie z OP.

Zapisanie tego jako odpowiedzi, aby nie zniknęły z komentarzy.

+1

Aby uzyskać więcej informacji na temat specyficznych kodowań obsługiwanych w R (i poprawnej składni do użycia), przejdź do sekcji * Kodowanie * na stronie pomocy '? Plik' – Megatron

2

wychodził podobny problem niedawno gdzie otrzymał komunikat o błędzie jak:

1: W read.table (file = plik, header = nagłówek, wrz = SEP quote = środki, to: linia 3 pojawi zawierać osadzone wartości null.

starałem resetowania parametr fileencoding ale nie udało się usunąć ostrzeżenia. na szczęście, natknąłem SkipNul argumentem wymienione w tym link i ustawienie go na T pracował dla mnie.

0

Wystarczy tylko poprawnie utworzyć plik CSV, nie zmieniaj nazwy pliku ".Number" na ".csv". Otwórz plik .Numbers, wyeksportować go do pliku CSV, a następnie wpisz następujący kod w swoim środowisku R:

testowym < - read.csv („MyFile.csv”)

Powiązane problemy