在R中使用带grep的for循环

时间:2015-03-13 04:02:29

标签: r if-statement for-loop grepl

我的代码存在问题。我有一个for循环,以便识别html文档中的所有“强”标签,然后识别html中给定单词的行号。我希望它,对于行号匹配的任何实例,记下该行号。到目前为止我已经知道了,但是如果在强标签所在的行之外有一个单词的实例,则它会失败

url <- readLines("http://afip.gob.ar/contacto")

tagname=NULL
identifier=NULL
IDintag=NULL
rowst=NULL
rowend=NULL
data=NULL

tag <- as.matrix(grep("<strong>",url))
    if(length(tag) > 0)
    {ID <- grep("Telef|Numero",url)
        for(i in 1:length(ID))
        {IDintag[i] <- grep(ID[i],tag)
        }
        for(i in 1:length(IDintag))
        {tagname[i] <- tag[IDintag[i]]
        }
        for(i in 1:length(tagname))
        {rowst[i] <- which(grepl(tagname[i],tag))
        rowend[i] <- tag[rowst[i] + 1,]-1
        data[i] <- toString(url[tagname[i]:rowend[i]])
        }
}

这就像梦一样,但是如果我将网址更改为强项不会出现ID条款的网址,则会失败,例如:

url <- readLines("http://www2.le.ac.uk/contact")

tagname=NULL
identifier=NULL
IDintag=NULL
rowst=NULL
rowend=NULL
data=NULL

tag <- as.matrix(grep("<h2>",url))
    if(length(tag) > 0)
    {ID <- grep("Telef|Numero|phone",url)
        for(i in 1:length(ID))
        {IDintag[i] <- grep(ID[i],tag)
        }
        for(i in 1:length(IDintag))
        {tagname[i] <- tag[IDintag[i]]
        }
        for(i in 1:length(tagname))
        {rowst[i] <- which(grepl(tagname[i],tag))
        rowend[i] <- tag[rowst[i] + 1,]-1
        data[i] <- toString(url[tagname[i]:rowend[i]])
        }
}

提前致谢

0 个答案:

没有答案