如何在R中删除所有行直到某个特定值

4

我有几个以一些文本开头的数据框。有时,我需要的信息从第11行开始,有时它从第16行开始,等等。这是变化的。所有数据框的共同点在于有一个名为“location”的标题后面开始包含有用信息。

我想编写一个循环,以删除数据框中有用信息之前的所有行(包括带有“location”行的行)。


4
欢迎来到StackOverflow!请阅读有关如何提问和如何生成最小可复现示例的信息。至少发布一些示例数据(并可能给出您认为输出应该是什么的示例)。还要分享您尝试过的任何代码。这将使其他人更容易地帮助您。 - Jaap
1个回答

2
我猜想您想要类似这样的内容:

我猜您想要的是这样的:

readfun <- function(fn,n=-1,target="location",...) {
   r <- readLines(fn,n=n)
   locline <- grep(target,r)[1]
   read.table(fn,skip=locline,...)
}

这种方法效率相对较低,因为它需要两次读取数据文件(一次作为原始字符字符串,一次作为数据框),但如果您的文件不太大,这种方法应该能够正常工作。 (@MrFlick在评论中指出,如果您有一个合理的上限来确定目标出现在文件中的位置,您可以设置n,这样您就不必读取整个文件来搜索目标。)
我不知道您的文件的其他细节,但使用"^location"来识别以该字符串开头的行或其他更具体的目标可能更安全...

1
它可能效率低下,但比先将其作为数据框读入再删除要好得多,因为那样会破坏列类的检测。如果您知道位置始终出现在某一行之前(比如说第20行),那么您可以设置readlines(fn, n=20)来避免读取整个文件。 - MrFlick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接