我需要过滤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)