用R混合其他语言
发布时间:2020-12-15 22:29:39 所属栏目:安全 来源:网络整理
导读:我使用R进行大部分统计分析.但是,清理/处理数据,特别是在处理1Gb的尺寸时,非常麻烦.所以我使用常见的UNIX工具.但我的问题是,是否可以在R会话中以交互方式运行它们?例如:假设file1是来自R进程的输出数据集,有100行.由此,对于我的下一个R进程,我需要第1列和
我使用R进行大部分统计分析.但是,清理/处理数据,特别是在处理1Gb的尺寸时,非常麻烦.所以我使用常见的UNIX工具.但我的问题是,是否可以在R会话中以交互方式运行它们?例如:假设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,rep("NULL",n-2))) 可以使用sqldf包.在这个例子中,我们假设一个csv文件data.csv,并且所需的字段被称为a和b.如果它不是csv文件,那么使用read.csv.sql的适当参数来指定其他分隔符等: # 4 library(sqldf) DF <- read.csv.sql("data.csv",sql = "select a,b from file") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |