r - 将其他语言与 R 混合

标签 r unix

我的大部分统计分析都使用 R。但是,清理/处理数据,尤其是处理 1Gb+ 大小的数据时,非常麻烦。所以我为此使用了常见的 UNIX 工具。但我的问题是,是否可以在 R session 中间以交互方式运行它们?一个例子:让我们说 file1是来自 R 进程的输出数据集,有 100 行。由此,对于我的下一个 R 过程,我需要第 1 列和第 2 列的特定子集,file2 ,可以通过 cut 轻松提取和 awk.所以工作流程是这样的:

Some R process => file1
cut --fields=1,2 <file1 | awk something something >file2
Next R process using file2

如果这是一个愚蠢的问题,请提前道歉。

最佳答案

试试这个(如果需要,添加其他 read.table 参数):

# 1
DF <- read.table(pipe("cut -fields=1,2 < data.txt| awk something_else"))

或在纯 R 中:
# 2
DF <- read.table("data.txt")[1:2]

或者甚至不读取不需要的字段,假设有 4 个字段:
# 3
DF <- read.table("data.txt", colClasses = c(NA, NA, "NULL", "NULL"))

对于我们知道我们想要前两个字段但不知道还有多少其他字段的情况,可以修改最后一行:
# 3a
n <- count.fields("data.txt")[1]
read.table("data.txt", header = TRUE, colClasses = c(NA, NA, rep("NULL", n-2)))

可以使用 sqldf 包。在这个例子中,我们假设一个 csv 文件,data.csv并且所需的字段称为 ab .如果它不是 csv 文件,则对 read.csv.sql 使用适当的参数指定其他分隔符等:
# 4
library(sqldf)
DF <- read.csv.sql("data.csv", sql = "select a, b from file")

关于r - 将其他语言与 R 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892319/

相关文章:

linux - *nix 中的打印机配置文件

python - 无需Windows专用工具即可向现有xlsx添加密码(无人值守)

linux - 无法使用外部表读取文件或使用 PL/SQL 使用 UTL_FILE 写入文件

r - 按年份过滤等于或小于阈值

r - 简化多个一对一配对聚合

r - R 和 scikit-learn 在逻辑回归分类任务中的比较

c - 如果没有使用 openlog() 的网络,那么 syslog() 设施是什么

R - 如何获得两点之间的平滑曲线?

r - 仅使用代码保存 networkD3 Sankey 图

linux - 如何使用 sed/awk/perl 从特定列中删除 n 个字符