R从系统命令的标准输出读取数据到数据帧

标签 r csv dataframe system stdout

我用

调用系统命令
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/

相关文章:

r - 按组展开日期

R代码根据概率/比例随机分配数据

r - R 中矩阵的逆

django - 使用 CSV Django 模块以通用换行模式打开文件

php - 如何在不耗尽内存的情况下通过 PHP 将数百万行从 MySQL 导出到 CSV?

python - Pandas - df.size() 错误 : 'numpy.int64' object is not callable

r - 如何使用 R 以编程方式提取/解压缩 .7z (7-zip) 文件

python - 基于 JSON 字典键的 CSV header

r - 如何将数据框转换为 R 中的列联表?

Python 从字典键创建新列