Как я уже упоминал выше, ваша задача на самом деле разбирать HTML, поэтому более подходящим методом будет использование пакета типа rvest
, созданного для разбора HTML. Я предполагаю, что это часть таблицы большего размера, и в этом случае вы, вероятно, могли бы использовать rvest::html_table
для очистки данных из всей таблицы сразу.
Если вместо этого у вас есть просто строки тегов HTML для каждой строки, вы можете преобразовать этот текст в его представление XML (основу HTML) с помощью read_html
. Затем из этого XML вы можете извлечь теги <tr>
, затем из этих извлечь теги <td>
. Я сделал строки таблицы перед ячейками таблицы на случай, если вам понадобится больше логики для хранения строк.
library(dplyr)
library(rvest)
tags <- "<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>"
read_html(tags) %>%
html_nodes("tr") %>%
html_nodes("td")
#> {xml_nodeset (11)}
#> [1] <td>1</td>\n
#> [2] <td>11 Com</td>\n
#> [3] <td>b</td>\n
#> [4] <td>Radial Velocity</td>
#> [5] <td>1</td>\n
#> [6] <td>326.03</td>\n
#> [7] <td>1.29</td>\n
#> [8] <td></td>\n
#> [9] <td>19.4</td>\n
#> [10] <td></td>
#> [11] <td>2.7</td>
Затем html_text
извлекает внутренний текст из каждого тега.
read_html(tags) %>%
html_nodes("tr") %>%
html_nodes("td") %>%
html_text()
#> [1] "1" "11 Com" "b"
#> [4] "Radial Velocity" "1" "326.03"
#> [7] "1.29" "" "19.4"
#> [10] "" "2.7"
Создано в 2018-10-31 пакетом Представление (v0.2.1)