包含在文本文件中的特定于grep的节或数字/单词,带R
我有一个文本文件,其中包含研究分析的许多不同输出部分。文本文件如下所示包含在文本文件中的特定于grep的节或数字/单词,带R,r,R,我有一个文本文件,其中包含研究分析的许多不同输出部分。文本文件如下所示 Zone 1 Dist. Time Amb. Time Ster. Time Vert. Vert. Zone Zone Tr.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries Time ==
Zone 1
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone Zone
Tr.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries Time
======= ============ ====== ============ ====== ============ ====== ============ ========== ============
626.29 000:00:29.90 480 000:00:05.25 52 000:00:24.85 11 000:00:11.75 1 000:01:00.00
489.99 000:00:23.20 401 000:00:07.30 75 000:00:29.45 5 000:00:11.65 0 000:01:00.00
-----------------------------------------------------------------------------------------------------
Zone Totals
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone Zone
Tr.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries Time
======= ============ ====== ============ ====== ============ ====== ============ ========== ============
5661.08 000:04:39.30 4360 000:00:55.35 572 000:04:25.35 81 000:02:23.85 1 000:10:00.00
======= ============ ====== ============ ====== ============ ====== ============ ==========
-----------------------------------------------------------------------------------------------------
Block Summary
-------------
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone
Trav.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries
========== ============ ====== ============ ====== ============ ====== ============ ==========
626.29 000:00:29.90 480 000:00:05.25 52 000:00:24.85 11 000:00:11.75 1
489.99 000:00:23.20 401 000:00:07.30 75 000:00:29.45 5 000:00:11.65 0
dist_move = apply(data.frame(grep("Totals",dat)+1, grep("Block",dat)-2),1,function(x) (dat[x[1]:x[2]]))
我怎样才能仅grep区域总数部分?更具体地说,我只想grep区域总数部分的Dist.Tr.编号。但是我会很高兴得到整个部分,然后在需要的地方裁剪线条
我在想这样的事情
Zone 1
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone Zone
Tr.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries Time
======= ============ ====== ============ ====== ============ ====== ============ ========== ============
626.29 000:00:29.90 480 000:00:05.25 52 000:00:24.85 11 000:00:11.75 1 000:01:00.00
489.99 000:00:23.20 401 000:00:07.30 75 000:00:29.45 5 000:00:11.65 0 000:01:00.00
-----------------------------------------------------------------------------------------------------
Zone Totals
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone Zone
Tr.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries Time
======= ============ ====== ============ ====== ============ ====== ============ ========== ============
5661.08 000:04:39.30 4360 000:00:55.35 572 000:04:25.35 81 000:02:23.85 1 000:10:00.00
======= ============ ====== ============ ====== ============ ====== ============ ==========
-----------------------------------------------------------------------------------------------------
Block Summary
-------------
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone
Trav.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries
========== ============ ====== ============ ====== ============ ====== ============ ==========
626.29 000:00:29.90 480 000:00:05.25 52 000:00:24.85 11 000:00:11.75 1
489.99 000:00:23.20 401 000:00:07.30 75 000:00:29.45 5 000:00:11.65 0
dist_move = apply(data.frame(grep("Totals",dat)+1, grep("Block",dat)-2),1,function(x) (dat[x[1]:x[2]]))
但是它只是抓取了所有的行假设在最后的注释中创建了文件,读入它,找到区域总计行,然后读取下一行第5行的第一个数字。不使用包,它适用于单区和多区总截面
L <- trimws(readLines("test-file.dat"))
scan(text = sub(" .*", "", L[grep("Zone Totals", L) + 5]), quiet = TRUE)
## [1] 5661.08
或者这个稍微短一点的变化:
L <- readLines("test-file.dat")
read.table(text = L[grep("Zone Totals", L) + 5])[[1]]
## [1] 5661.08
笔记
如果使用stringr在区域总计中有多行,则使用更通用的方法 笔记
请输入示例数据集使用readLines将每一行作为单个字符向量中的字符元素导入。然后只选择您感兴趣的行,在检测到带区域总计的行之后可以是5行,在块摘要之前可以是4行。然后用你最喜欢的read.table变量打开剩下的行。我们不知道dat和x是什么?谢谢!这很有效。如果我想在《时代》杂志上看到这些数字呢。或垂直。碳纳米管。列?删除变体第二行末尾的[[1]]。太好了,再次感谢!我只是把[[1]]改成了[[2]]或者我想要的任何专栏。
myText <-
"Zone 1
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone Zone
Tr.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries Time
======= ============ ====== ============ ====== ============ ====== ============ ========== ============
626.29 000:00:29.90 480 000:00:05.25 52 000:00:24.85 11 000:00:11.75 1 000:01:00.00
489.99 000:00:23.20 401 000:00:07.30 75 000:00:29.45 5 000:00:11.65 0 000:01:00.00
-----------------------------------------------------------------------------------------------------
Zone Totals
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone Zone
Tr.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries Time
======= ============ ====== ============ ====== ============ ====== ============ ========== ============
5661.08 000:04:39.30 4360 000:00:55.35 572 000:04:25.35 81 000:02:23.85 1 000:10:00.00
======= ============ ====== ============ ====== ============ ====== ============ ==========
-----------------------------------------------------------------------------------------------------
Block Summary
-------------
Dist. Time Amb. Time Ster. Time Vert. Vert. Zone
Trav.(cm) Amb. Cnts. Ster. Cnts. Rest. Cnts. Time Entries
========== ============ ====== ============ ====== ============ ====== ============ ==========
626.29 000:00:29.90 480 000:00:05.25 52 000:00:24.85 11 000:00:11.75 1
489.99 000:00:23.20 401 000:00:07.30 75 000:00:29.45 5 000:00:11.65 0"