添加带引号的属性–;R中的XML

添加带引号的属性–;R中的XML,r,xml,loops,R,Xml,Loops,我正在尝试使用XML包在R中构建一个XML文件。(我对这一点非常陌生,我甚至仍在理解XML文件的不同组件,这使事情变得有点复杂)。 第一步非常简单: #Create XML file doc_beast <- newXMLDoc() root <- newXMLNode("beast", doc = doc_beast) #Write taxa node taxaNode <- newXMLNode("taxa", parent = root, attrs = c(id="t

我正在尝试使用XML包在R中构建一个XML文件。(我对这一点非常陌生,我甚至仍在理解XML文件的不同组件,这使事情变得有点复杂)。 第一步非常简单:

#Create XML file
doc_beast <- newXMLDoc()
root <- newXMLNode("beast", doc = doc_beast)

#Write taxa node
taxaNode <- newXMLNode("taxa", parent = root, attrs = c(id="taxa"))

taxa <- getNodeSet(doc_beast, "//beast/taxa")

for(i in 1:nrow(metadata)) {
         newXMLNode("taxon", parent = taxa)
        }
doc_beast
数据帧是这样的:

species_name <- c('sp1', 'sp2', 'sp3')
lat <- c(-3.16, -0.56, -2.1)
long <- c(-59.90, -52.57, -60.2)

metadata <- data.frame(species_name,lat,long)

species\u name调用
newXMLNode
时,可以传递
attrs=
属性来设置节点上的属性。所以你可以

for(i in 1:nrow(metadata)) {
  newXMLNode("taxon", parent = taxa, 
    attrs = list(id=as.character(metadata$species_name[i])))
}
这会回来的

<?xml version="1.0"?>
<beast>
  <taxa id="taxa">
    <taxon id="sp1"/>
    <taxon id="sp2"/>
    <taxon id="sp3"/>
  </taxa>
</beast>

应该是
id=“sp_1”>
吗?是的,你是对的。谢谢
species_name <- c('sp1', 'sp2', 'sp3')
lat <- c(-3.16, -0.56, -2.1)
long <- c(-59.90, -52.57, -60.2)

metadata <- data.frame(species_name,lat,long)
for(i in 1:nrow(metadata)) {
  newXMLNode("taxon", parent = taxa, 
    attrs = list(id=as.character(metadata$species_name[i])))
}
<?xml version="1.0"?>
<beast>
  <taxa id="taxa">
    <taxon id="sp1"/>
    <taxon id="sp2"/>
    <taxon id="sp3"/>
  </taxa>
</beast>