【问题标题】:What is the difference between <uniq> in BASH and <unique> in R?BASH 中的 <uniq> 和 R 中的 <unique> 有什么区别?
【发布时间】:2020-05-06 21:25:10
【问题描述】:

与 R 中的 unique 相比,BASH 中的 uniq 得到不同的结果。我的 df 看起来像(超过 9000 行):

samples read_seq
ccd_x29 GCATTGGT
ccd_x29 GCATTGGT
ccd_x29 GCATTGGT
ccd_x20 GCCCGGCTAG
ccd_x19 GCATTGGTGGTT
ccd_x19 GCATTGGTGGTT

在 bash uniq 之后我得到 8811 行,df &lt;- unique(df) 我得到 8803 行。

这是什么原因造成的?

【问题讨论】:

  • 对于示例中的示例,您能否显示 BASH 的输出
  • 在输出上运行一个差异,看看两者之间有什么不同。
  • @akrun 我只是执行``` cat df |独特 | wc -l```获取bein uniq之后的行数。当我用 R 做unique 时,行数略有不同。
  • 我无法通过您在 R 中展示的示例 nrow(unique(df1))# [1] 4 并使用 bash cat tmp_today.txt | uniq | wc -l# 4 来重现您的问题
  • @Apex 请发布一个显示差异的示例

标签: r bash count unique uniq


【解决方案1】:

来自R docs

请注意,与 Unix 命令 uniq 不同,它省略了重复的元素/行,而不仅仅是重复的元素/行。也就是说,如果一个元素等于任何先前的元素,而不仅仅是它等于前一个元素,则该元素被省略。 (对于后者,请参阅rle)。

【讨论】:

    【解决方案2】:

    如果我们只想省略前面重复的元素,可以选择 rleid from data.table

    library(data.table)
    library(dplyr)
    df %>%
        mutate(new = rleid(samples, read_seq)) %>%
        distinct(new, .keep_all = TRUE) %>%
        select(-new)
    

    【讨论】:

    • 完美,这给出了在 Bash 中运行 uniq 命令时的确切行号
    猜你喜欢
    • 2016-02-28
    • 2023-03-16
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多