从R中的URL中提取域名的功能

Pra*_*han 11 r

我正在寻找一个可以从R中的URL中提取域名的函数.任何类似于R中的tldextract的函数?编辑:目前我正在使用以下方法:

domain=substr(as.character("www.google.com"), 
   which(strsplit("www.google.com",'')[[1]]=='.')[1]+1, nchar("www.google.com"))
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一种可以节省编码工作量的预定义功能.

hrb*_*str 23

您还可以使用相对较新的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
Run Code Online (Sandbox Code Playgroud)

它的支持Rcpp因此它的速度很快(比使用内置的R apply函数要多得多).


Tyl*_*ker 6

我不知道包中的函数可以做到这一点。我认为 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"
Run Code Online (Sandbox Code Playgroud)