我有一堆输出 .txt 文件,其中包含一个大型参数列表和一个 X-Y 坐标集。我需要从所有文件中提取这些坐标,以便仅将这些行导入到向量中。这可以很好地工作
impcoord<-read.table("file.txt",skip= ,nrow= ,...)
但文件会在不同长度的支持参数后打印坐标集。
幸运的是,坐标总是在包含某些单词的行之后开始。
因此我的问题是,如何开始阅读这些单词之后的 .txt 文件?假设它们是:
coordinatesXY
非常感谢您的时间和帮助!
-奥利
--编辑--
抱歉造成困惑。
文件部分如下:
##XYDATA= (X++(Y..Y))
131071 -2065
131070 -4137
131069 -6408
131068 -8043
... ...
... ...
第一行是 skip
应该结束的行,并且需要将以下坐标导入到向量中。正如您所看到的,X 坐标从 131071 开始,到 0 结束。
最佳答案
gsubfn 中的
1) read.pattern read.pattern
可用于仅读取与特定模式匹配的行。在此示例中,我们匹配行首、可选空格、1 个或多个数字、1 个或多个空格、可选减号后跟 1 个或多个数字、可选空格、行尾。与正则表达式括号内部分匹配的部分作为 data.frame 中的列返回。例如,如果数据来自文件,则此自包含示例中的 text = Lines
可以替换为 "myfile.txt"
。修改图案以适应。
Lines <- "junk
junk
##XYDATA= (X++(Y..Y))
131071 -2065
131070 -4137
131069 -6408
131068 -8043"
library(gsubfn)
DF <- read.pattern(text = Lines, pattern = "^ *(\\d+) +(-?\\d+) *$")
给予:
> DF
V1 V2
1 131071 -2065
2 131070 -4137
3 131069 -6408
4 131068 -8043
2) 读取两次 仅使用基 R 的另一种可能性是简单地读取一次以确定 skip=
的值,然后使用第二次进行实际读取那个值。要从文件 myfile.txt
中读取,请将 text = Lines
和 textConnection(Lines)
替换为 "myfile.txt"
> .
read.table(text = Lines,
skip = grep("##XYDATA=", readLines(textConnection(Lines))))
添加了一些修订并添加了第二种方法。
关于R - 从 .txt 文件中读取特定行之后的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25680670/