是否有一个R函数可以将随机字母序列识别为唯一序列?

是否有一个R函数可以将随机字母序列识别为唯一序列?,r,R,我正在寻找一种识别不同字母序列并重新编码的方法 让我举例说明: 序列“ABABA”有两个唯一的字母“A”和“B”。我想用“2”重新编码这个序列。 第二个序列“BABAB”也有两个唯一的字母“A”和“B”,因此该序列也应重新编码为“2” 一旦你有了更多不同的字母,它就会变得很困难,因为你可以得到成千上万的组合。 “ABCDE”有5个独特的字母,应重新编码为“5”。 “FAEDC”还有5个独特的字母 所以,对于我来说,序列的顺序并不重要。我只想找出一个序列中有多少个唯一的字母,然后把这个5个字母的序

我正在寻找一种识别不同字母序列并重新编码的方法

让我举例说明: 序列“ABABA”有两个唯一的字母“A”和“B”。我想用“2”重新编码这个序列。 第二个序列“BABAB”也有两个唯一的字母“A”和“B”,因此该序列也应重新编码为“2”

一旦你有了更多不同的字母,它就会变得很困难,因为你可以得到成千上万的组合。 “ABCDE”有5个独特的字母,应重新编码为“5”。 “FAEDC”还有5个独特的字母

所以,对于我来说,序列的顺序并不重要。我只想找出一个序列中有多少个唯一的字母,然后把这个5个字母的序列重新编码成一个数字


帮点忙就好了!(很抱歉英语不好!)

您可以拆分字符串并在
sapply中计算
唯一的

v <- c("ABABA", "BABAB", "ABCDE", "FAEDC")
sapply(strsplit(v, ""), function(x) length(unique(x)))
# [1] 2 2 5 5

v您可以拆分字符串并在
sapply

v <- c("ABABA", "BABAB", "ABCDE", "FAEDC")
sapply(strsplit(v, ""), function(x) length(unique(x)))
# [1] 2 2 5 5

v我没有找到内置函数,但您可能需要尝试:

count_unique_letters <- function(word) {
    word_length <- nchar(word)
    letters <- character(word_length)
    for(i in 1:word_length) {
        letters[i] <- substr(word, i, i)
    }
    return(length(unique(letters)))
}


count_unique_letters我没有找到内置函数,但您可能想试试:

count_unique_letters <- function(word) {
    word_length <- nchar(word)
    letters <- character(word_length)
    for(i in 1:word_length) {
        letters[i] <- substr(word, i, i)
    }
    return(length(unique(letters)))
}


count\u unique\u字母也许你在寻找
unique
也许你在寻找
unique
无需
loop
只要
length
unique
就行了你是对的!事实上,@jay.sf提供了一个适当的解决方案。然而,我认为对于一个“R新手”来说,这个版本更容易阅读,不需要
循环
只要
长度
独特
就行了。你是对的!事实上,@jay.sf提供了一个适当的解决方案。然而,我认为这个版本对于“R新手”来说更容易阅读