2014-10-28 2 views
0

Я пытаюсь просто читать в произвольном файле в R в виде строки. Затем сохраните его в другом месте.Прочитать в произвольном файле как строку, а затем сохранить обратно в файл? Всегда поврежден

data = readLines("/path_to_file/") 
con = file("/new_path_to_file", "w") 
writeLines(data, con) 
close(con) 

Каждый раз, когда новый файл поврежден (тестирование с этим изображением: http://lacuadramagazine.com/wp-content/uploads/sangeh-monkey-forest-101.jpg).

Я также пробовал readChar, но в зависимости от файла, я получаю ошибку UTF-8.

Я хочу, чтобы иметь возможность делать это с любым файлом - изображение, текст и т. Д. Это часть более крупного анализа (поэтому file.copy не сокращает его), но я даже не могу получить базовый механизм чтения/записи. Должна быть простой, но в тупик.

+3

... '? File.copy'? –

+0

Я делаю другие вещи между ними, например base64 encode/processing/decode. Трюк заключается в том, что я хочу импортировать произвольный файл в виде строки, что легко в python (open (filepath) .read()), но я не могу это сделать в R. – bumpkin

+1

Вы только сказали, что хотите прочитать его и сохранить. Если вы хотите делать другие вещи, вы должны сказать это в своем вопросе. –

ответ

1

Здесь вы работаете с двоичными данными, а не с символьными данными. Скорее всего, вы должны работать с

setwd("~/../Desktop") 
fn<-"sangeh-monkey-forest-101.jpg" 
img<-readBin(fn, raw(), file.info(fn)$size) 
writeBin(img, "out.jpg") 

Вы можете попробовать преобразовать в символ с функциями, как rawToChar(img) но так как строки R не может содержать нулевые значения (которые ваша не делает - which(img==0)) вы не можете представить это как правильно закодированную строку.

+0

Does readBin ограничивает количество символов, которые я могу импортировать до 10000, или я неправильно их понимаю? https://stat.ethz.ch/R-manual/R-devel/library/base/html/readBin.html – bumpkin

+0

Я считаю, что это сообщение специально, если вы используете 'readBin' для чтения символьных данных из файла. Если вы читаете «сырые» данные, я не считаю, что это ограничение применяется. Я пробовал код выше на образце образца, и он работал просто отлично, а 'length (img)' был 111683. – MrFlick

+0

awesome. Спасибо за помощь!! – bumpkin

Смежные вопросы