2016-08-24 7 views
1

Я называю системную команду сR читать данные из стандартного вывода команды системы в кадр данных

driveFileList <- try(as.data.frame(system(paste0("/usr/local/bin/gdrive list "), intern = TRUE, ignore.stderr = TRUE))) 

проверить результат с

print(dim(driveFileList)) 
print(typeof(driveFileList)) 

и я вижу, что у меня есть список с 3-мя ряды и 0 столбцов.

Но командная система дает мне на самом деле что-то вроде этого

1 Id    Name    Type    Created 
2 23423423  nameOfFile1.csv doc    2016-08-22 18:40:05 
3 2342342  nameOfFile2.csv doc    2016-08-22 18:39:39 
4 34323334  nameOfFile3.csv doc    2016-08-23 17:58:46 

Как я могу «взорвать» это, что я получаю реальный кадр данных?

Благодаря Йорг

ответ

1

as.data.frame не делать то, что вы думаете, что он делает. Команда system возвращает вам строку символов (некоторого формата), поэтому вам нужно ее проанализировать. Попробуйте read.table или аналогичную функцию (которая точно используется, и какие параметры зависят от точного вывода вызова).

Вам необходимо либо передать текст в функции через ее text аргумента (т.е. результат = read.table (текст = system_output, ...) ) or you could use труба instead of system`, и читать результирующий поток.

Глядя . readme of gdrive, это выглядит так, как будто read.fwf будет более подходящим, чем read.table в вашем экземпляре

+1

Спасибо, то read.fwf сделал трюк так читать мои файлы из GDrive я сделал мошенника user987875