Я использую Mac с RStudio 0.99.489 и R3.2.2. У меня есть CSV-файл размером 1 ГБ, он не совсем большой, но все равно занимает около 5 минут, если я пытаюсь импортировать его с помощью read.csv, а у меня много файлов такого размера, поэтому я попробовал fread()
. Прочитав предыдущие вопросы, я узнал, что эта ошибка может быть связана с отсутствующими значениями даты (обычные записи будут выглядеть как «03 мая 1995: 15: 31: 50» для столбца даты, однако там, где возникает ошибка, это выглядит как «05 мая»).
Я попробовал sed 's/\\0//g' mycsv1.csv > mycsv2.csv
, как указано в "Встроенный нуль в string' при импорте csv с помощью fread, но то же самое сообщение об ошибке все еще появляется.
sed -i 's/\\0//g' /src/path/mycsv.csv
просто не работает для меня, терминал сообщает об ошибке для этой командной строки (я не очень хорошо знаком с этими командными строками, поэтому я не понимаю их логику)
Я попытался
file <- "file.csv"
tt <- tempfile() # or tempfile(tmpdir="/dev/shm")
system(paste0("tr < ", file, " -d '\\000' >", tt))
fread(tt)
из "Встроенный нуль в строку", когда импортируя большой CSV (8 ГБ) с помощью fread(), я думаю, он удалил записи, в которых отсутствует значение, потому что, когда я запускаю fread(tt)
, R говорит
Error in fread(tt) :
Expecting 5 cols, but line 5060627 contains text after processing all cols. It is very likely that this is due to one or more fields having embedded sep=',' and/or (unescaped) '\n' characters within unbalanced unescaped quotes.
После этого я попробовал iconv -f utf-16 -t utf-8 myfile1.csv > myfile2.csv
, потому что похоже, что это было вызвано какой-то проблемой с fread
, которая не может понять utf-16, и может быть что-то не так с этой командной строкой, но она просто дает мне электронную таблицу со случайными символами.
И я видел это
vim filename.csv
:%s/CTRL+2//g
ESC #TO SWITCH FROM INSERT MODE
:wq # TO SAVE THE FILE
from Ошибка с fread в R - встроенный nul в строку : '\0', но после того, как я ввел vim filename.csv
, терминал просто прочитал всю электронную таблицу, и я не смог ввести вторую команду (:%s/CTRL+2//g
), опять же, я не совсем понимаю эти командные строки, поэтому, возможно, мне нужно внести некоторые коррективы в мою ситуацию.
Спасибо за помощь!