根据R中的字符数删除字符串

时间:2014-10-26 04:36:49

标签: r

如果我有这样的数据框,

V1 V2 V3
1  2  abchd00ajnsf
2  3  urr0sfj0s000
3  4  00000000ab00
4  5  ajauiauiajoi
.................

我希望从数据框中删除这些行,在第三列中,字母数小于3。 例如,第三行将被删除,因为其字符串中的字符数小于3。 我怎么能在R?

1 个答案:

答案 0 :(得分:2)

您可以使用gsub删除所有数字,然后使用nchar

获取字符数
df[!nchar(gsub("[0-9]+", "", df[[3]])) < 3L,]
#   V1 V2           V3
# 1  1  2 abchd00ajnsf
# 2  2  3 urr0sfj0s000
# 4  4  5 ajauiauiajoi

或等效

df[nchar(gsub("[0-9]+", "", df[[3]])) > 2L,]

已添加:您也可以使用正则表达式grepl(\\D.*){3}执行此操作。

df[grepl("(\\D.*){3}", df[[3]]), ]
#   V1 V2           V3
# 1  1  2 abchd00ajnsf
# 2  2  3 urr0sfj0s000
# 4  4  5 ajauiauiajoi