我想将链接中的表加载到 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
第三列,即Formula Average Mass Monoisotopic Mass
,具有三行/值/行,它们都混合在一起,因此显示为一个连续的字符串。我只想提取此列中的第一行/行或以某种方式将三个值彼此分开。
这是第三列的第一个单元格在呈现的 html 页面中的样子:
如果我使用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>
但是,也有其他时候该列中的第二行和第三行为空。例子:
<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>
那么如何从给定的链接中提取表格,但保持第三列的结构可读且不混淆?此外,是否可以在不遍历每个单独页面的链接的情况下提取所有页面中的表格?