计算R中连续字符的不同长度子串

时间:2015-05-05 17:37:23

标签: r counting substring

我有一个由大量字符串组成的数据集,长度为12,从两个状态字母表(z,x)中提取。这是两个例子。

  data <- c("zzxzzzxzzzzx","zzzxxzzzzzzx")

我希望计算由连续“z”序列组成的子串的频率。

在此示例中,所需频率为

“zz”,1(仅限数据[1])

“zzz”,2(每个数据[1]和数据[2]中有1个)

“zzzz”,1(仅限数据[1])

“zzzzzz”,1(仅限数据[2}

2 个答案:

答案 0 :(得分:1)

不确定这是否是你想要的

 library(stringi)
 table(unlist(stri_extract_all_regex(data, '(?:(z+))\\1*')))
 #    zz    zzz   zzzz zzzzzz 
 #    1      2      1      1 

或者这个

  table(unlist(lapply(stri_extract_all_regex(data,
                             '(?:(z+))\\1*'), unique)))
  #  zz    zzz   zzzz zzzzzz 
  #   1      2      1      1 

答案 1 :(得分:1)

table(unlist(strsplit(gsub('x{1,2}',' ',data),' ')))