在R中筛选字符串最后10位含3个及以上连续a的数据
R语言筛选末尾10字符含3个及以上连续'a'的字符串
步骤1:构造示例数据框
先把你提供的数据转换成R可处理的数据框:
df <- data.frame( V1 = c( "aaashkjnlkdjfoin", "jbfkjdnsnkjaaaas", "djshbdkjaaabdfkj", "jbdfkjaaajbfjna", "ndjksnsjksdnakns", "aaaandfjhsnsjna" ), stringsAsFactors = FALSE )
步骤2:编写筛选代码
核心逻辑是先提取每个字符串的最后10个字符,再用正则表达式匹配是否存在3个及以上连续的'a':
# 筛选符合条件的字符串 matched_strings <- df$V1[ grepl(pattern = "aaa+", x = substr(df$V1, start = pmax(1, nchar(df$V1)-9), stop = nchar(df$V1)) ) ] # 输出结果 print(matched_strings)
代码说明
substr(df$V1, pmax(1, nchar(df$V1)-9), nchar(df$V1)):提取每个字符串的最后10个字符,pmax(1, ...)避免字符串长度不足10时出现负起始位置,直接取整个字符串grepl("aaa+", ...):检查目标字符段中是否包含3个及以上连续的'a'(aaa+表示至少3个连续a)- 最后通过逻辑索引从原数据框中筛选出符合条件的字符串
运行结果
执行后会输出你期望的列表:
[1] "jbfkjdnsnkjaaaas" "djshbdkjaaabdfkj" "jbdfkjaaajbfjna"
内容的提问来源于stack exchange,提问作者margo
相关产品推荐
相关产品推荐

