【问题标题】:Remove particular lines from a text file in R从 R 中的文本文件中删除特定行
【发布时间】:2016-07-05 18:07:26
【问题描述】:

我使用sink() 将脚本的输出写入 .txt 文件,但无论出于何种原因,提示也写入了 txt 文件。几天前我问了一个问题来解决这个问题,但没有答案,所以我在这里从不同的角度来处理它。这是我的脚本生成的 txt 文件:

> geno(hdr) 
DataFrame with 12 rows and 3 columns
            Number        Type                         Description
       <character> <character>                         <character>
GT               1      String                            Genotype
GQ               1     Integer                    Genotype Quality
DP               1     Integer                          Read Depth
HDP              2     Integer                Haplotype Read Depth
HQ               2     Integer                   Haplotype Quality
...            ...         ...                                 ...
mRNA             .      String                     Overlaping mRNA
rmsk             .      String                  Overlaping Repeats
segDup           .      String Overlaping segmentation duplication
rCov             1       Float                   relative Coverage
cPd              1      String                called Ploidy(level)

> sink()

因为我想要删除的行是以&gt; 开头的行,所以我在想是否有办法打开 txt 文件并删除那些特定的行。在这种情况下,&gt; geno(hdr)&gt; sink() 行将被删除。我在 R 中根本不擅长正则表达式,所以我不知道这将如何工作。任何帮助表示赞赏。谢谢。

【问题讨论】:

  • ?也许capture.output() 可以代替?
  • 我也试过 capture.output() 。没运气。我真的不知道问题出在哪里,这就是为什么我决定走这条路,而不是拼命想弄清楚
  • 正如您之前的@​​987654321@ 中所评论的,当我使用sink() 时也不会显示提示。您的 CPU 环境是什么:R 版本/OS/R Studio 或 RScript 或 RCmd 运行代码?
  • 我在 CentOs 6.8 上使用 Rstudio 0.98.1103。 R 版本 3.3.0

标签: regex r


【解决方案1】:

你可以试试这个。逐行读取文件并检查该行是否以&gt;开头,如果不是,则将其追加到新文件中:

con <- file('test.txt', open = 'r')
while(TRUE) {
    line <- readLines(con, n = 1)
    if(length(line) == 0) break
    else if(!startsWith(line, ">")){
        write(line, file = "newTest.txt", append = TRUE)
    } 
}

【讨论】:

  • 是的!完美运行。
猜你喜欢
  • 1970-01-01
  • 2011-08-13
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
相关资源
最近更新 更多