首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >R-对字符串中的连续字母进行计数

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

Stack Overflow用户
提问于 2019-06-27 05:19:10
回答 2查看 137关注 0票数 1

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

代码语言:javascript
复制
ashjklmghipo

这里我们有连续的字母下注: jklm,ghi,po。最大连续字母表为jklm。所以长度是4。

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

EN

回答 2

Stack Overflow用户

发布于 2019-06-27 05:24:38

把它简化为你已经解决的问题:

代码语言:javascript
复制
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中找到连续位数的最大值,你说你已经知道怎么做了。(如果您需要帮助,请访问see this question。)

票数 2
EN

Stack Overflow用户

发布于 2019-06-27 07:27:39

我在想如何用一些矩阵运算符来做这件事,但我只用递归策略解决了它。

我希望它是有用的:

OBS: R有一个名为letters的全局变量

代码语言:javascript
复制
#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),]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56781024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档