2015-04-03 1 views
2

Примечание:Я ожидаю, что это, вероятно, повторяющийся вопрос. Однако, когда я искал ответ, я не нашел его, поэтому спасибо за ваше терпение.Получение дополнительных символов с помощью dput() для создания txt-файла

Выпуск: Когда я использую dput() писать определенные строки существующего .txt файла в новый файл .txt, я вижу дополнительные, неожиданные персонажи, например, c(\.

репрографии шаги:

  1. Скачать zip файл, содержащий .txt для чтения из:

    download.file(url = "https://d396qusza40orc.cloudfront.net/dsscapstone/dataset/Coursera-SwiftKey.zip", "dataset.zip") 
    
  2. Распакуйте файл:

    unzip(zipfile = "dataset.zip") 
    
  3. Прочитал в пару строк, чтобы просмотреть данные:

    readLines("final/en_US/en_US.blogs.txt",n=2) 
    [1] "In the years thereafter, most of the Oil fields and platforms were named after pagan “godsâ€." 
    [2] "We love you Mr. Brown." 
    # Ignore the characters around "gods" for this discussion 
    
  4. Написать строки в новый файл с помощью dput():

    dput(readLines("final/en_US/en_US.blogs.txt",n=2),"dputtest.txt") 
    
  5. Читайте в линии от dputtest.txt и увидеть новые символы:

    readLines("dputtest.txt") 
    [1] "c(\"In the years thereafter, most of the Oil fields and platforms were named after pagan “godsâ€.\", " 
    [2] "\"We love you Mr. Brown.\")" 
    

Посс Возможные причины: Интересно, связано ли это с кодировкой файла или, возможно, с нулевым аргументом sep =.

Пожалуйста, дайте мне знать, если вам нужно что-нибудь еще, чтобы понять проблему или воспроизвести ее. Благодарю.

ответ

2

dput выводит распознаваем представление объекта, таким образом, что вы можете кормить его обратно в команду R линии и получить исходный объект , Например:

dput(letters, "test.txt") 
let <- eval(parse("test.txt")) 
identical(let, letters) # TRUE 

То, что вы, вероятно, хотите, writeLines, write.table или write в зависимости от ваших данных.

+0

Спасибо! На несколько сопутствующем примечании я попытался пометить это сообщение 'dput()' или, альтернативно, 'dput', и оба они были недоступны. Любая идея почему? –

1

Я думаю, вы должны использовать writeLines() вместо dput():

rr <- readLines("final/en_US/en_US.blogs.txt",n=2) 
writeLines(rr,"output.txt") 
0

При использовании dput для сохранения данных, то использовать DGET читать данные обратно R.

txt <- c("First line", "Second line") 
f <- tempfile() 
dput(txt, f) 
txt2 <- dget(f) 
identical(txt, txt2) 
Смежные вопросы