2015-07-29 20 views
9

Próbuję odczytać pliku csv> 4GB, jednak kiedy używam polecenia fread to produkuje i błądBłąd fread w R - wbudowany nul w ciąg znaków: ' 0'

library(data.table) 
csv1 <- fread("cleaned.csv",sep = ",",colClasses = "character",showProgress = TRUE) 

Błąd :embedded nul in string: '\0'

Po niektórzy patrząc odkryłem, że można użyć sed funkcję takie jak w tym stackoverflow Question Ale nie mam pojęcia jak go używać w moim scenariuszu. Proszę pomóż!

AKTUALIZACJA: Próbowałem użyć funkcji sed, jak opisano poniżej w komentarzach, jednak rzucają błąd.

sed couldn't flush stdout no space left on device

Update2: mam rozwiązać go za pomocą jakiegoś colleagues.However, Nadal szukam zautomatyzować tę działalność, ponieważ musiałem powtórzyć proces dla każdego pliku. Oczekiwana automatyzacja powinna pochodzić z poziomu R lub skryptu BASH. Jakieś sugestie?

+1

sed to jedno z narzędzi bash, instalowane domyślnie we wszystkich dystrybucjach Linuksa. –

+1

Dlaczego nie spróbujesz tego 'fread (" sed 's/\\ 0 // g' mycsv.csv ")'? –

+1

Linux-Ubuntu 14.04 przy użyciu serwera Rstudio – Shoaibkhanz

Odpowiedz

4

CSV pliki zostały wypełnione ^@ i zostały one umieszczone w pustych wartości, jakoś nie mogli być przeszukiwane lub zastąpione przez sed commands aby rozwiązać problem, a następnie następujące rozwiązanie.

w systemie Linux, należy do katalogu plików i użyć polecenia vim takich jak,

vim filename.csv

:%s/CTRL+2//g

ESC #TO SWITCH FROM INSERT MODE

:wq # TO SAVE THE FILE

musiałem to zrobić ręcznie za każdy plik. Wciąż jednak szukam sposobu na zautomatyzowanie tego w R lub używając skryptu BASH.

+2

Skrypty Vima (gvim, vim) mogą być dość łatwe do przystosowania ' vi -s edit.vim filename.txt' gdzie edytować.vim zawiera (opcjonalnie: wq) ':% s/CTRL + 2 // g : wq' możesz również użyć polecenia': argdo 'do uruchomienia polecenia dla wszystkich plików w argumencie. – scribbles

Powiązane problemy