Пакет xml2
- хороший выбор для такого рода проблем.Ваш начальный код выше был близок, вам просто нужно было разобрать «переменные» дочерние узлы и извлечь текст из интересующего атрибута.
library(xml2)
x <- read_xml(xml_file)
#Read parent node variables
vars <- xml_find_all(x, "//variables")
#parse the children nodes "variable"
variable<-xml_find_all(vars, "//variable")
#obtain the text from the "index" & "value" attributes and convert to numeric.
vnames<-xml_attr(variable, "name")
index<-as.integer((xml_attr(variable, "index")))
values<-as.numeric(xml_attr(variable, "value"))
data.frame(index, values)
Пример вывода:
data.frame(index, values)
index values
1 0 2222.2222
2 1 444.4444
3 2 333.3333
4 3 2111.1111
5 4 4222.2222
6 5 3166.6667
7 6 666.6667
8 7 333.3333
9 8 0.0000
10 9 0.0000
11 10 7500.0000
12 11 0.0000
13 12 0.0000