【问题标题】:How to make a unique set of names from a vector of strings?如何从字符串向量中创建一组唯一的名称?
【发布时间】:2010-06-01 20:29:40
【问题描述】:

我有一个字符串向量。查看我的矢量图,它是awesome

> awesome
[1] "a" "b" "c" "d" "d" "e" "f" "f"

我想创建一个与awesome 长度相同的新向量,但如有必要,字符串已被唯一化。例如,我想要的函数的有效输出是

> awesome.uniqueified
[1] "a" "b" "c" "d.1" "d.2" "e" "f.1" "f.2"

有没有一种简单、R-thonic 和漂亮的方法来做到这一点?我应该说我在现实生活中的列表(它不称为awesome)包含 25000 个微阵列探针组标识符。

当我开始编写小通用函数(我确信我可以做到)时,我总是很紧张,因为我确信过去有一些 R 大师遇到过这个问题,并用一些令人难以置信的算法解决了这个问题甚至不必在向量中存储超过一半的元素。我只是不确定他们可能会怎么称呼它。可能不是uniqueify

【问题讨论】:

    标签: r


    【解决方案1】:

    尝试make.unique(),帮助页面的第一个示例已经出现:

    make.unique(c("a", "a", "a"))
    [1] "a"   "a.1"   "a.2"
    

    帮助页面将 Thomas Minka 列为作者。一天给他买杯啤酒:)

    【讨论】:

    • 做出完整的答案... make.unique(strsplit(awesome,'')[[1]]) 你需要将单词分成一个字符向量
    • 发帖标题和原始示例显示“字符串向量”,所以我认为我们不需要strsplit()
    • 真的,这是我在 stackoverflow 上最干净的问答体验。非常感谢!如果我有机会,肯定会为 Minka 博士提供啤酒。我想,按照这种模式,我欠他 EP 的啤酒,他不是开发了“盖茨”符号吗?可能也应该为此给他买啤酒。
    • 我很高兴看到这个功能对我以外的其他人都派上了用场。
    • 如果您的元素有 10 个或更多重复项,另请参阅 this answer
    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    相关资源
    最近更新 更多