我用
调用系统命令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
我怎样才能“分解”它,得到一个真实的数据框?
谢谢 约尔格
最佳答案
as.data.frame()
并不像您想象的那样。 system()
命令返回一个字符串(某种格式),因此您需要对其进行解析。尝试 read.table()
或类似函数(具体使用哪个函数以及使用什么参数取决于调用的确切输出)。
您需要通过函数的 text
参数(即 result = read.table(text = system_output, …)
)将文本传递给函数,或者您可以使用pipe()
而不是 system()
,并读取结果流。
查看 readme of gdrive , 看起来好像 read.fwf()
在您的实例中将比 read.table()
更合适。
关于R从系统命令的标准输出读取数据到数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39126037/