r - 从R中的HTML标签中提取数据
问题描述
我有一个要从中提取数据的 html 表。我在这里有第 21 行,我需要从中获得 11 个字符向量(然后对所有数据行执行相同操作。我正在尝试编写一个函数来执行此操作,其中:
dt
是我的数据表,这就是第 21 行的样子:
[1] "<tr><td>1</td><td>11 Com</td><td>b</td><td>Radial Velocity</td>
<td>1</td><td>326.03</td><td>1.29</td><td></td><td>19.4</td><td></td>
<td>2.7</td></tr>"
我需要摆脱所有的“ <tr><td>
”等,并在它们背靠背存在的地方插入 0 或 NA ( "</td><td></td><td>"
)。
这是我到目前为止所拥有的。首先,我不断收到错误:
strsplit(a,
"</td><td>"
) 中的错误:非字符参数
f<-function(row.data){
a<-strsplit(row.data,"<tr><td>")
b<-unlist(strsplit(a,"</td><td>")))
}
f(dt[21])
这还没有解决插入 0 或 NA 的问题。我对 R 很陌生,所以我非常感谢任何帮助。
解决方案
这可以通过gsub
. 正如评论的那样,您确实应该逃避/
with\\
dat <- "<tr><td>1</td><td>11 Com</td><td>b</td><td>Radial Velocity</td><td>1</td><td>326.03</td><td>1.29</td><td></td><td>19.4</td><td></td><td>2.7</td></tr>"
a<-gsub("<tr>",0,dat)
a<-gsub("<td>",0,a)
a<-gsub("<\\/td>",0,a)
a<-gsub("<\\/tr>",0,a)
a
[1] "0010011 Com00b00Radial Velocity0 \n0100326.03001.29000019.4000 \n02.700"
推荐阅读
- sql - Postgres 中的 Schema.Table
- android - 如何在 Java 中将视图绑定与包含的视图一起使用?
- excel - 如何阻止一组单元格在 Excel 的公式中递增
- python - python / pip - whl 不是这个平台上支持的轮子
- gradle - Gitlab Runner 配置以忽略在服务器上构建的文件夹
- tensorflow2.0 - `_UserObject` 对象没有属性 `call_and return_conditional_losses`
- python - Scrapy 输出 JSON 或 CSV
- python - 尝试使用经过验证的用户令牌调用 api 时出现值错误
- pivot-table - 相当于Stata中的Excel透视
- android - AppCenter 似乎找不到 Android 资源