提问人:MAb2021 提问时间:9/4/2019 最后编辑:thelatemailMAb2021 更新时间:9/4/2019 访问量:844
R 函数解析 strsplit 中返回错误“下标越界”
R function to parse returning error in strsplit "subscript out of bounds"
问:
我正在使用 R 提取一列 HTML 页面的域名。为此,我创建了一个函数“域”。它似乎工作正常,直到它到达以“mailto:[email protected]”形式出现的页面。这些显然是电子邮件的链接。我仍然想将它们合并到我的数据集中,但我得到的错误是:“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 上运行了这段代码,它工作得很好,所以我认为这一定是它卡住的地方。我不介意它是否导致“[email protected]”或保持原样。
答:
1赞
Ronak Shah
9/4/2019
#1
我们可以尝试编写一个条件来检查以 和 have 开头的字符串(如果需要,可以使其更加严格)。因此,该函数可能如下所示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)
评论
if
mainpagelevel3$url
"mailto:"
""^mailto:.*@.*"
url_parse()