如何删除R中的所有行,直到某个值

时间:2014-05-25 17:14:45

标签: r row

我有几个数据框,从一些文本开始。有时我需要的信息从第11行开始,有时它从第16行开始。它改变。所有数据框的共同之处在于有用的信息在标题为" location"的行之后开始。

我想循环删除有用信息上方数据框中的所有行(包括带有"位置"的行)。

1 个答案:

答案 0 :(得分: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"来识别开始与该字符串的行或其他更多信息可能会更安全具体目标......