2

リンクのテーブルをRのデータフレームにロードしたい.

次のスクリプトは、テーブルを正常に抽出します。

install.packages("htmltab")
library(htmltabl)
url <- "http://www.hmdb.ca/metabolites?utf8=✓&amp;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 番目の列の最初のセルがどのように見えるかを次に示します。

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>

image -- 要素の検査のスクリーンショット

では、指定されたリンクからテーブルを抽出し、3 番目の列の構造を読みやすく、混同しないようにするにはどうすればよいでしょうか? さらに、個別のページごとにリンクをループせずに、すべてのページのテーブルを抽出することは可能ですか?

4

1 に答える 1