用于解析 strsplit "subscript out of bounds" 中返回错误的 R 函数

R function to parse returning error in strsplit "subscript out of bounds"

我正在使用 R 为 HTML 页面的列提取域名。为此,我创建了一个函数 "domain"。它似乎工作正常,直到它到达以 "mailto: person@example.com" 形式出现的页面。这些显然是电子邮件的链接。我仍然想将这些合并到我的数据集中,但我得到的错误是:"Error in strsplit(gsub("http://|https://|www\.", "", x), "/")[[c(1, 1)]] : 下标越界

如何修改此代码以绕过 "mailto" 个页面?

这是我的功能

domain <- function(x) strsplit(gsub("http://|https://|www\.","", x),"/")[[c(1,1)]]

这是我的命令

mainpagelevel3$url <- sapply(mainpagelevel3$url, domain)

我 运行 将此代码放在一组不包含 "mailto:" 页面的 URL 上,并且工作正常,所以我认为这一定是它卡住的地方。我不介意结果是 "person@example.com" 还是保持原样。

我们可以尝试编写一个 if 条件来检查以 "mailto" 开头并包含 "@" 的字符串(如果需要,可以使其更严格)。所以函数可能看起来像

domain <- function(x) {
   if(grepl("^mailto:.*@.*", x)) x 
      else strsplit(gsub("http://|https://|www\.","", x),"/")[[c(1,1)]]
}

然后照常使用sapply

mainpagelevel3$url <- sapply(mainpagelevel3$url, domain)