リンクのテーブルをRのデータフレームにロードしたい.
次のスクリプトは、テーブルを正常に抽出します。
install.packages("htmltab")
library(htmltabl)
url <- "http://www.hmdb.ca/metabolites?utf8=✓&filter=true&toxin=1&filter=true"
hm_ext <- htmltab(url)
しかし、ここに問題があります:
> head(hm_ext)
HMDB ID CAS Number Name FormulaAverage Mass Monoisotopic Mass Biospecimen Location
2 HMDB000014264-18-6 Formic acid CH2O246.025446.005479308 BloodBreast MilkCerebrospinal Fluid (CSF)FecesSalivaSweatUrine
3 HMDB0000228108-95-2 Phenol C6H6O94.111294.041864814 BloodFecesSalivaSweatUrine
4 HMDB000059818496-25-8 Sulfide S32.06531.97207069 Blood
5 HMDB00005997440-47-3 Chromium Cr51.996151.940511904 BloodCerebrospinal Fluid (CSF)SalivaUrine
6 HMDB00006577440-50-8 Copper Cu63.54662.929601079 BloodCerebrospinal Fluid (CSF)SalivaUrine
7 HMDB00006627782-41-4 Fluoride F18.998418.998403205 BloodSalivaUrine
3 番目の列、つまりFormula Average Mass Monoisotopic Mass
には 3 つの行/値/行があり、それらがすべて混ざり合っているため、1 つの連続した文字列として表示されます。この列の最初の行/行のみを抽出したい、または何らかの方法で 3 つの値を互いに分離したい。
レンダリングされた HTML ページで、3 番目の列の最初のセルがどのように見えるかを次に示します。
を使用しても同じことが起こりますXML::readHTMLTable
。
Chrome でをクリックすると、列Inspect Element
のセルに次のような構造が表示されます。Formula Average Mass Monoisotopic Mass
<td class="weight-value">CH<sub>2</sub>O<sub>2</sub><br><br>46.0254<br>46.005479308</td>
画像埋め込んでください。私はそれを行うのに十分な評判を持っていません
ただし、この列の 2 行目と 3 行目が空の場合もあります。例:
<td class="weight-value">(C<sub>12</sub>H<sub>19</sub>NO<sub>19</sub>S<sub>3</sub>)nH<sub>2</sub>O<br><br><span class="wishart wishart-not-available">Not Available</span><br></td>
では、指定されたリンクからテーブルを抽出し、3 番目の列の構造を読みやすく、混同しないようにするにはどうすればよいでしょうか? さらに、個別のページごとにリンクをループせずに、すべてのページのテーブルを抽出することは可能ですか?