我在BASH中使用uniq和在R中使用unique得到的结果是不同的,我的df看起来像(超过9千行)。
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 <- unique(df)
我得到8803行。
是什么原因造成的?
如果我们只想省略前一个重复的元素,我们可以使用一个选项 rleid
从 data.table
library(data.table)
library(dplyr)
df %>%
mutate(new = rleid(samples, read_seq)) %>%
distinct(new, .keep_all = TRUE) %>%
select(-new)
来自 R文档:
请注意,与Unix命令不同的是
uniq
这将省略重复的元素,而不仅仅是重复的元素行。也就是说,如果一个元素与之前的元素相等,而不仅仅是与之前的元素相等,就会被省略。关于后者,请参见rle
).