我正在尋找一種可以從R中的URL中提取域名的函數。 任何類似於R中tldextract的函數? 編輯: 我目前使用下面的方法:從R中提取域名的功能R
domain=substr(as.character("www.google.com"),
which(strsplit("www.google.com",'')[[1]]=='.')[1]+1, nchar("www.google.com"))
但是我正在尋找一個預先定義的功能,可節省編碼工作。
我正在尋找一種可以從R中的URL中提取域名的函數。 任何類似於R中tldextract的函數? 編輯: 我目前使用下面的方法:從R中提取域名的功能R
domain=substr(as.character("www.google.com"),
which(strsplit("www.google.com",'')[[1]]=='.')[1]+1, nchar("www.google.com"))
但是我正在尋找一個預先定義的功能,可節省編碼工作。
我不知道一個包中的函數來做到這一點。我不認爲R的基本安裝中有任何東西。使用用戶定義的函數並將它存儲在source
以後的地方,或者使用它自己製作包。
x1 <- "http://stackoverflow.com/questions/19020749/function-to-extract-domain-name-from-url-in-r"
x2 <- "http://www.talkstats.com/"
x3 <- "www.google.com"
domain <- function(x) strsplit(gsub("http://|https://|www\\.", "", x), "/")[[c(1, 1)]]
domain(x3)
sapply(list(x1, x2, x3), domain)
## [1] "stackoverflow.com" "talkstats.com" "google.com"
這正是我一直在尋找的。一個可以處理任何可能類型的URL的函數。 –
您也可以使用相對較新的urltools
包:
library(urltools)
URLs <- c("http://stackoverflow.com/questions/19020749/function-to-extract-domain-name-from-url-in-r",
"http://www.talkstats.com/", "www.google.com")
suffix_extract(domain(URLs))
## host subdomain domain suffix
## 1 stackoverflow.com <NA> stackoverflow com
## 2 www.talkstats.com www talkstats com
## 3 www.google.com www google com
它是由Rcpp
支持所以它是邪惡的快(顯著如此比使用內置R中apply
功能
我。只是寫了這個正則表達式,可以應用到電子郵件和網站上提取和匹配域。正則表達式可以修改提取不同的部分,它是矢量化的,我做了一些額外的處理,完全o ptional。
invalid_domains = "yahoo.com|aol.com|gmail.com|hotmail.com|comcast.net|me.com|att.net|verizon.net|live.com|sbcglobal.net|msn.com|outlook.com|ibm.com"
domain <- function(x){
to_return <- tolower(as.character(x))
to_return <- gsub('.*[[email protected]/]+([^[email protected]:/]+[.][a-z]+)(/.*$|$)','\\1',x,ignore.case=T) # extract domain. \\1 selects just the first group.
to_return <- gsub(".ocm", ".com", to_return) # correct mispellings
# to_return <- ifelse(grepl(invalid_domains,to_return),NA,to_return) # (optional) check for invalid domains, especially when working with emails.
to_return <- ifelse(grepl('[.]',to_return),to_return,NA) # if there is no . this is an invalid domain, return NA
return(to_return)
}
添加的例子,表明你已嘗試到現在什麼。 –
-1直到提供了示例數據,以及您嘗試過的內容! –
我使用的代碼目前已添加 –