如何只过滤R中所有字符串中包含所有大写字母的矢量



我需要过滤R中大写的行。我设法使用了以下代码:

filter(str_detect(fruit, "^[:upper:]+$"))

然而,列";水果";包含两个或三个字符串,并且上面的代码仅适用于只有一个字符串的情况。我不能共享数据,但这个例子适用于我的目的(只有str_detect部分(

fruit <- c("apple", "ORANGE", "kiwi" ,"TWO PEARS", "A BIG PINEAPPLE", "LEMON")
str_detect(fruit, "^[:upper:]+$")
[1] FALSE  TRUE FALSE FALSE FALSE  TRUE

我想要的是还能够识别";两个峰";以及";一个大松果";。你能帮帮我吗?

非常感谢!

尝试包含空格字符类。

stringr::str_detect(fruit, "^[[:upper:][:space:]]+$")
#[1] FALSE  TRUE FALSE  TRUE  TRUE  TRUE

根据对问题的评论,否定大写字母:

stringr::str_detect(fruit, "^[^[:lower:]]+$")
#[1] FALSE  TRUE FALSE  TRUE  TRUE  TRUE

我们可以在base R中使用grep

grep("^[A-Z ]+$", fruit, value = TRUE)
#[1] "ORANGE"          "TWO PEARS"       "A BIG PINEAPPLE" "LEMON"   

获取其他元素

grep("^[A-Z ]+$", fruit, value = TRUE, inverse = TRUE)

相关内容

最新更新