R-对字符串中的连续字母进行计数

R-对字符串中的连续字母进行计数,r,R,我想知道字符串中最大连续字母数的长度(不包括顺序)。例如: ashjklmghipo 这里我们有连续的阿尔卑斯山:jklm,ghi,po。最大连续字母为jklm。所以长度是4 我对连续的数字做了同样的事情,但不知道如何对字母表这样做。 任何帮助都将不胜感激。TIA:)将其简化为您已经解决的问题: x = "ashjklmghipo" x_letters = strsplit(x, "")[[1]] x_digits = match(x_letters, letters) x_digits #

我想知道字符串中最大连续字母数的长度(不包括顺序)。例如:

ashjklmghipo
这里我们有连续的阿尔卑斯山:jklm,ghi,po。最大连续字母为jklm。所以长度是4

我对连续的数字做了同样的事情,但不知道如何对字母表这样做。
任何帮助都将不胜感激。TIA:)

将其简化为您已经解决的问题:

x = "ashjklmghipo"
x_letters = strsplit(x, "")[[1]]
x_digits = match(x_letters, letters)
x_digits
# [1]  1 19  8 10 11 12 13  7  8  9 16 15

不,您需要在
x_digits
中找到最大连续位数,您说您已经知道该怎么做了。(如果你需要帮助的话,)

我在考虑如何使用一些矩阵运算符,但我只使用递归策略来解决它

我希望它有用:
OBS:R有一个名为
letters

#Get string
x = "ashjklmghipo"

#split in char
l = strsplit(x, "")[[1]]
# sort if you want
# l = sort(l)

# Creating data.frame with inital letter: 'init' and number of consecutives: 'n'
nleters = data.frame(init = l, n = 0)

# Using recursive strategi
kmax = length(l)

for(k in 1:kmax){
  # var letters is sorted in alphabet order
  aux = (letters[letters >= l[k]] == l[k:kmax])
  for(i in 1:length(aux)){
    # test if 
    if(aux[i]){
      nleters[k,"n"] = nleters[k,"n"] + 1
      # in first non consecutive "aplhabet" breaks inner loop
    }else{break()}
  }
}

# print result
nleters[order(-nleters$n),]

另一个选项是
utf8ToInt(x)
如果
max(制表(cumsum(c(FALSE,diff(utf8ToInt(x))!=1)))
当您说“排除顺序”时,您的意思是不排序字符串,是吗?因为,如果我对字符串排序,它将是5个连续的字母:“ijklm”。