R从系统命令的stdout读取数据到数据帧中

use*_*875 3 csv r stdout system dataframe

我用以下命令调用系统命令

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

我检查结果

print(dim(driveFileList))
print(typeof(driveFileList))
Run Code Online (Sandbox Code Playgroud)

我看到我有一个 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
Run Code Online (Sandbox Code Playgroud)

我怎样才能“爆炸”这个,得到一个真实的数据框?

谢谢约尔格

Kon*_*lph 5

as.data.frame()\xe2\x80\x99 并没有像你想象的那样做。该system()命令返回一个字符串(某种格式),因此您需要解析它。Tryread.table()或类似的函数(确切使用哪个函数以及什么参数,取决于调用的确切输出)。

\n

您需要通过其text参数(即result = read.table(text = system_output, \xe2\x80\xa6))将文本传递到函数中,或者您可以使用pipe()代替system(),并读取结果流。

\n

查看gdrive 的自述文件,它看起来似乎比您的实例read.fwf()更合适。read.table()

\n

  • 谢谢,read.fwf 成功了!因此,要从 gdrive 读取文件,我做了 con &lt;- pipe("/usr/local/bin/drive list")driveFileList &lt;- read.fwf( file=con,skip=4, widths=c(52, 43, 18) , 19)) (2认同)