R从系统命令的标准输出读取数据到数据帧
R read data from stdout of system command into data frame
我用
调用系统命令
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
我怎样才能'explode'得到一个真实的数据框?
谢谢
约尔格
as.data.frame()
并不像您想象的那样。 system()
命令返回一个字符串(某种格式),因此您需要对其进行解析。尝试 read.table()
或类似的函数(确切使用哪个函数以及使用什么参数取决于调用的确切输出)。
您需要通过其 text
参数(即 result = read.table(text = system_output, …)
)将文本传递给函数,或者您可以使用 pipe()
而不是 system()
,然后阅读结果流。
在您的实例中,查看 readme of gdrive, it looks as if read.fwf()
比 read.table()
更合适。
我用
调用系统命令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
我怎样才能'explode'得到一个真实的数据框?
谢谢 约尔格
as.data.frame()
并不像您想象的那样。 system()
命令返回一个字符串(某种格式),因此您需要对其进行解析。尝试 read.table()
或类似的函数(确切使用哪个函数以及使用什么参数取决于调用的确切输出)。
您需要通过其 text
参数(即 result = read.table(text = system_output, …)
)将文本传递给函数,或者您可以使用 pipe()
而不是 system()
,然后阅读结果流。
在您的实例中,查看 readme of gdrive, it looks as if read.fwf()
比 read.table()
更合适。