加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

用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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读