Моя цель - создать объект xml, содержащий несколько элементов, каждый из которых содержит различную информацию.Простой пример того, как выглядит объект xml:
library(xml2)
x1 <- read_xml("<Diag><line level='3' description='a log message'/><line level='3' description='a second log message'/></Diag>")
message(x1)
, который выдает:
<Diag>
<line level="3" description="a log message"/>
<line level="3" description="a second log message"/>
</Diag>
В данный момент я беру информацию из фрейма данных, называемого diag
.Я добавляю детей, используя цикл for
:
library(xml2)
diag <- data.frame(level=c(3,3),description=c('a log message','a second log message'),stringsAsFactors = F)
x2 <- xml_new_root("Diag")
for (i in 1:dim(diag)[1]) {
xml_add_child(.x=x2,.value="line",level=diag$level[i],description=diag$description[i])
}
message(x2)
XML-макет которого идентичен макету x1
.
Однако этот цикл менее элегантен, чем якак это должно быть, и, для больших фреймов данных, может быть медленным.
Мой вопрос: есть ли способ, которым я могу создать несколько детей одновременно, используя данные в моем фрейме данных, используя что-то похожеедо apply
?
Я пробовал различные варианты, но ни один из них не был успешным, и я не уверен, что был достаточно близко, чтобы опубликовать любой из этих вариантов здесь.В настоящее время я использую пакет xml2, но если решение может быть найдено с использованием другого пакета, я также буду к этому открыт.
С большой благодарностью за любую помощь!