str_detect用來檢測字串中是否存在要檢查的項目,可以檢查單一字元、字串,也支援正則表達式,需要注意的是檢查的項目有存在大小寫之分,檢查的結果只以TRUE、FALSE,所以實用性上來說並不是太大。
基本語法
str_detect(dataset$string, 檢查的字元或字串)
可用參數
negate = FALSE,預設FALSE,若為TRUE,則返回相反的檢查結果
有幾點要注意一下
- " " >> 準確查找,也就是AND,完全符合才行
- "[ ]" >> 模糊查找,也就是OR,部分符合即可
- 小寫與大寫判斷為不同字元,需要完全確定大小寫
建立一個字串的數據框
# 建立數據框
stringr_df <- tibble(
weekday = c("Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday")
)
# 看一下數據框的內容
r$> stringr_df
# A tibble: 7 x 1
weekday
<chr>
1 Sunday
2 Monday
3 Tuesday
4 Wednesday
5 Thursday
6 Friday
7 Saturday
檢查是否存在"t" >> 只有周六有小寫的t,大寫的無法檢測,加入參數設定TRUE檢查除了t以外的字元
# 檢查各自串是否存在"t"
str_detect(stringr_df$weekday, "t")
# 輸出結果
r$> str_detect(stringr_df$weekday, "t")
[1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE
# 檢查各自串是否存在"t"以外的字元
str_detect(stringr_df$weekday, "t", negate = TRUE)
# 輸出結果
r$> str_detect(stringr_df$weekday, "t", negate = TRUE)
[1] TRUE TRUE TRUE TRUE TRUE TRUE FALSE
接下來就需要比較注意,檢測是有區分範圍的,只以" "包圍的字串,檢測的條件為AND,若是以[ ]檢測,檢測的方式則為OR
# 檢查是否存在這三個字元
str_detect(stringr_df$weekday, "riy")
# 輸出結果 >> 全部都為FALSE
r$> str_detect(stringr_df$weekday, "riy")
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
若是以OR的方式
# 檢查是否存在這三個字元
str_detect(stringr_df$weekday, "[riy]")
# 輸出結果 >> 只要任一個有符合即為TRUE
r$> str_detect(stringr_df$weekday, "[riy]")
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE
沒有留言:
張貼留言