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



我正在使用R为一列HTML页面提取域名。我创建了一个函数"域"来做到这一点。它似乎工作正常,直到它到达作为"mailto:person@example.com"的页面。 这些显然是电子邮件的链接。 我仍然想将这些合并到我的数据集中,但我得到的错误是:"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)

最新更新