2016-12-07 9 views
0

Я пытаюсь вытащить файл с удаленного сервера в мой сеанс R.Не удается открыть соединение/файл при использовании функции scr RCURL

Вот код, я использую:

library(RCurl) 
x = "/mypath/thefile.txt" 


y = read.fwf(scp(host = 'myhost.place', path = x, 
      user= "myusername", password = "mypass", binary = FALSE), 
      widths = c(-1, 9, -42, 4), colClasses = c("character", "character"), 
      col.names = c("Var1", "Var2")) 

А вот сообщение об ошибке я получаю:

Ошибки в файле (файл «RT»): не могу открыть соединение В дополнении : Предупреждающее сообщение: В файле (файл, «rt»): не может открыть файл ' , за которым следует куча чисел, которые, как представляется, принадлежат файлу, который я пытаюсь прочитать.

Я успешно использовал подобные методы для чтения с того же сервера. Например, этот код работает отлично:

a = "/myotherpath/someSASfile.sas7bdat" 

b = read_sas(scp(host = 'myhost.place', path = a, 
      user= "myusername", password = "mypass", binary = TRUE)) 

ли кто-нибудь есть какие-либо идеи относительно того, почему второй набор кода работает, но первый не делает?

+0

Файлы имеют разные типы. Вызываемая функция отличается. – Marichyasana

+0

Проблема заключается в том, что 'scp' возвращает содержимое удаленного файла, в то время как первый arg' read.fwf' является именем файла. Сохраните файл чтения, а затем используйте имя файла в read.fwf. Эта функция read_sas, по-видимому, принимает необработанные потоки символов и, следовательно, работает непосредственно с данными –

ответ

0

благодарит за комментарии. Они помогли мне найти решение: readr's read_fwf. Вот ссылка на readr PDF CRAN в: https://cran.r-project.org/web/packages/readr/readr.pdf

Функция read_fwf работает аналогично read.fwf, но она работает лучше с чтением больших объемов данных, и обмен этих функций позволил мне прочитать файл успешно.

h = scp(host = 'myhost.place', path = x, 
    user= "myusername", password = "mypass", binary = FALSE) 

i = read_fwf(h, fwf_positions(c(2, 53), c(11, 56), c("Var1", "Var2")))