R - 从 .txt 文件中读取特定行之后的行

标签 r import

我有一堆输出 .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 = LinestextConnection(Lines) 替换为 "myfile.txt" > .

read.table(text = Lines, 
    skip = grep("##XYDATA=", readLines(textConnection(Lines))))

添加了一些修订并添加了第二种方法。

关于R - 从 .txt 文件中读取特定行之后的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25680670/

相关文章:

r - 我可以每隔一个逗号分隔一个字符吗?

r - 重新编码每年到每月的日期范围并计数的最快方法?

r - dplyr: group_by 和 which

python - librosa 库出错

python - 如何强制 IPython 查看更新的库?

java - 我可以告诉 javac 忽略缺少 `import foo.Bar` 吗?

用于合并导入项的 Python 工具

r - 按 R 中另一个分类变量的比例对一个变量进行排序

r data.table group by 没有聚合

swift - Xcode忽略导入