我有一個區分男性和女性名字的代碼grepl()
。下面的代碼給出,它的工作原理,但我無法理解它是如何工作的。瞭解R中的這個grepl()函數的工作原理
name = c("Braund, Mr. Owen Harris",
"Cumings, Mrs. John Bradley (Florence Briggs Thayer)")
grepl("\\(.*?\\)", name)
# [1] FALSE TRUE
我有一個區分男性和女性名字的代碼grepl()
。下面的代碼給出,它的工作原理,但我無法理解它是如何工作的。瞭解R中的這個grepl()函數的工作原理
name = c("Braund, Mr. Owen Harris",
"Cumings, Mrs. John Bradley (Florence Briggs Thayer)")
grepl("\\(.*?\\)", name)
# [1] FALSE TRUE
匹配是基於(
,零個或多個字符(.*
)跟隨它並隨後閉合)
)的存在。在這裏,它假定女性的名字有大括號。我們也可以匹配基礎上,Mrs.
grepl("\\bMrs\\.", name)
#[1] FALSE TRUE
你的代碼,男性和女性的名字之間沒有區別。
"\\(.*?\\)"
是regular expression。它是用於names
符合具有開口托架(
,隨後的字符數,然後閉合托架)
的元素搜索在大文本模式(如CTRL + F
)
grepl("\\(.*?\\)", name)
搜索的強有力的方法。
所以這個正則表達式不是區分男性和女性的名字,它區分(.. something something ..)
元素和沒有這種模式的元素。
我的意思是......他們都不會重複嗎?只要標記他們所有的dups .. – sln