Hi,
Using dplyr is the tidiest option
library(XML)
library(dplyr)
xml_doc <-"
<DATA>
<RECORD>
<VAR1>string1</VAR1>
<VAR2>1</VAR2>
<VAR3>2.3</VAR3>
<VAR4>TRUE</VAR4>
</RECORD>
<RECORD>
<VAR1>string2</VAR1>
<VAR2>2</VAR2>
<VAR3>3.4</VAR3>
<VAR4>FALSE</VAR4>
</RECORD>
<RECORD>
<VAR1>string3</VAR1>
<VAR2>3</VAR2>
<VAR3>4.5</VAR3>
<VAR4>TRUE</VAR4>
</RECORD>
</DATA>"
myXML = xmlParse(xml_doc)
myData = xmlToDataFrame(myXML, stringsAsFactors = FALSE,) %>%
mutate_all(~type.convert(., as.is = T))
'data.frame': 3 obs. of 4 variables:
$ VAR1: chr "string1" "string2" "string3"
$ VAR2: int 1 2 3
$ VAR3: num 2.3 3.4 4.5
$ VAR4: logi TRUE FALSE TRUE
Set the as.is to FALSE if you prefer factors instead of strings
Hope this is what you're looking for...
PJ