(1) gsubfn
s
が入力文字列 (改行が含まれる場合があります) であると仮定すると、これは、またはスペース以外の<
ものが続き、タグに抽出されます。関数は出現を表にします。/
>
table
library(gsubfn)
tags <- strapply(tolower(s), "\\<([^/> ]+)", c, simplify = unlist)
table(tags)
例えば、
s <- "<html>
<body>
<h1>hello</h1>
</body>
</html>"
tags <- strapply(tolower(s), "\\<([^/> ]+)", c, simplify = unlist)
table(tags)
これを与える:
tags
body h1 html
1 1 1
ファイルが非常に大きい場合、gsubfn の開発バージョンには高速バージョンのstrapplyc
.
(2)XML
上記のアプローチは、引用符で囲まれた文字列やその他の境界ケースに<
and記号がある場合、混乱する可能性があります。>
とにかく入力にそのようなインスタンスがないかもしれませんが、この2番目のアプローチでその問題が発生しない場合に備えて:
library(XML)
doc <- htmlTreeParse(tolower(s), asText = TRUE, useInternalNodes = TRUE)
tags <- xpathSApply(doc, "//*", xmlName)
table(tags)