【问题标题】:keep only unique elements in string in r在 r 中仅保留字符串中的唯一元素
【发布时间】:2016-07-05 18:42:45
【问题描述】:

在基因组学研究中,您经常有许多带有重复基因名称的字符串。我想找到一种仅将唯一基因名称保留在字符串中的有效方法。这是一个有效的例子。但是,是否可以一步完成,即不必拆分整个字符串,然后将唯一的元素重新组合在一起?

genes <- c("GSTP1;GSTP1;APC")
a <- unlist(strsplit(genes, ";"))
paste(unique(a), collapse=";")
[1] "GSTP1;APC"

【问题讨论】:

  • 这只是将其合并为一行:paste(unique(unlist(strsplit(genes, ";")),collapse=";"))
  • 我在堆栈上看到了这个:stackoverflow.com/questions/20283624/…
  • 如果你能找到更好的东西,我会感到非常惊讶。除了可能将 fixed = TRUE 添加到 strsplit 以提高效率。还有 stringi::stri_unique 声称比 NLP 更适合base::unique(但也慢得多)。
  • 你可以自己写一个函数来完成这两部分......

标签: r string unique


【解决方案1】:

另一种方法是做

unique(unlist(strsplit(genes, ";")))
#[1] "GSTP1" "APC"

那么这应该会给你答案

paste(unique(unlist(strsplit(genes, ";"))), collapse = ";")
#[1] "GSTP1;APC"

【讨论】:

  • 谢谢,但我需要将唯一的基因名称保留在同一个字符串中,用';'分隔。
  • @milan 查看更新版本,它会为您提供您喜欢的确切输出
【解决方案2】:

根据所展示的示例,也许

gsub("(\\w+);\\1", "\\1", genes)
#[1] "GSTP1;APC"

【讨论】:

  • 谢谢。它确实适用于这个例子,但如果你有一个稍微不同的字符串,它就不起作用:c("A", "B", "A")。
猜你喜欢
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 2014-06-04
  • 2022-01-17
  • 1970-01-01
相关资源
最近更新 更多