2015-07-29 26 views
9

ben bir csv dosyası okumaya çalışıyorum> 4GB, ancak ürettiği ve hataHata - dizesinde gömülü nul: ' 0' ı <code>fread</code> komutunu kullandığınızda

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

Hata : bazı sonraembedded nul in string: '\0'

Ben böyle bu stackoverflow Question gibi sed fonksiyonunu kullanabilirsiniz bulundu seyir Ama benim senaryoda nasıl kullanılacağını hiçbir ipucu var. Lütfen yardım et!

GÜNCELLEME: Aşağıda, sed fonksiyonunu yorumlarda açıklandığı gibi kullanmaya çalıştım, ancak bir hata atıyorlar.

sed couldn't flush stdout no space left on device

Update2: Bazı colleagues.However yardımıyla bunu çözdük , ben hala her dosya için işlemi tekrarlamak zorunda çünkü bu etkinliği otomatik hale getirmek arıyorum. Beklenen Otomasyon ya R içerisinde ya da bir BASH Komut Dosyası kullanılarak olabilir. Baska öneri?

+1

tüm Linux dağıtımlarında varsayılan olarak yüklenir bash aracı biridir. –

+1

Neden bu 'yaygara (' sed 's/\\ 0 // g' mycsv.csv ")' yi denemiyorsun? Yerinde için –

+1

Linux- Ubuntu 14.04 sonra terminal açın ve çalışma Rstudio sunucusu – Shoaibkhanz

cevap

4

CSV dosyaları ^@ doldurulur edildi ve bir şekilde onlar aranan veya sorunu çözmek için sed commands yoluyla değiştirilmesi edilemedi, boş değerler dahilinde yerleştirildi, ben aşağıdaki çözümü izledi.

Linux kullanımında,

vim filename.csv

:%s/CTRL+2//g

:wq # TO SAVE THE FILE

ESC #TO SWITCH FROM INSERT MODE

dosya dizinine takip edip gibi vim komutunu kullanın ben elle bunu yapmak zorunda her dosya Yine de, bunu R içinde veya BASH komut dosyasından kullanarak otomatik hale getirmenin bir yolunu arıyorum. sed

+2

um komut (gvim, vim) 'vi -s edit.vim filename.txt' adapte kolay olabilir nerede düzenleyinvim içerir (:: wq isteğe bağlıdır) ':% s/CTRL + 2 // g : wq' Ayrıca argümandaki tüm dosyalar üzerinde komut çalıştırmak için': argdo 'komutunu da kullanabilirsiniz. – scribbles

İlgili konular