Thank you so much!!!! You really helped me a lot! Best from R'dam, Stefan
On Fri, Nov 13, 2009 at 2:14 AM, Duncan Temple Lang <dun...@wald.ucdavis.edu> wrote: > > > stefan.d...@gmail.com wrote: >> Hello, >> thanks a lot. This is a form which I can work with in R. >> >> Another question, which I hope is not a bridge too far: Can I write >> the R matrix which your code created back into the xml format (i.e. >> with the same tags and structure) from which it came and hence feed it >> back to the original software? > > > trans = apply(xx, 1, function(x) { > tr = newXMLNode("transition") > mapply(newXMLNode, names(x), x, MoreArgs = list(parent > = tr)) > tr > }) > top = newXMLNode("transitionmatrix", .children = trans) > saveXML(top, "newTransition.xml") > > > > >> >> Best, >> Stefan >> >> >> On Thu, Nov 12, 2009 at 3:17 PM, Duncan Temple Lang >> <dun...@wald.ucdavis.edu> wrote: >>> >>> stefan.d...@gmail.com wrote: >>>> Hello, >>>> from a software I have the following output in xml (see below): >>>> It is a series of matrices, for each age one. I have 3 categories >>>> (might vary in the application), hence, 3x3 matrices where each >>>> element gives the probability of transition from i to j. I would like >>>> read this data into R (preferably in a list, where each list element >>>> is one of the age specific matrices) and - after altering the values >>>> in R - write it back into the file. I know that there is an xml >>>> package in R with which I have already struggled, but I have to admit >>>> my understanding is too limited. Maybe somebody had a similar problem >>>> or know the code of the top of his or her head. >>> Hi Stefan >>> >>> There are many approaches for handling this. I assume that the primary >>> obstacle you are facing is extracting the values from the XML. The >>> following >>> will do that for you. >>> We start with the content in transition.xml (or in a string in R). >>> Since the XML is very shallow, i.e. not very hierarchical, and all >>> the information is in the transition nodes under the root, we can >>> use xmlToList(). >>> This returns a list with an element for each <transition> >>> element, and such elements are character vectors containing the >>> values from age, sex, from, to, and percent. >>> So I've put these into a matrix and you are now back entirely >>> within R and can group the values by age and arrange them into >>> the individual transition matrices. >>> >>> >>> doc = xmlParse("transition.xml") >>> matrix(as.numeric(unlist(xmlToList(doc))), , 5, byrow = TRUE, >>> dimnames = list(NULL, names(xmlRoot(doc)[[1]]))) >>> >>> >>> D. >>> >>> >>> >>>> Any help appreciated. >>>> >>>> Thanks and best, >>>> Stefan >>>> >>>> >>>> >>>> >>>> >>>> <?xml version="1.0" encoding="UTF-8" standalone="no"?><transitionmatrix> >>>> <transition><age>0</age><sex>0</sex><from>1</from><to>1</to><percent>99.99999</percent></transition><transition><age>0</age><sex>0</sex><from>1</from><to>2</to><percent>0.0</percent></transition><transition><age>0</age><sex>0</sex><from>1</from><to>3</to><percent>0.0</percent></transition><transition><age>0</age><sex>0</sex><from>2</from><to>1</to><percent>0.0</percent></transition><transition><age>0</age><sex>0</sex><from>2</from><to>2</to><percent>99.999985</percent></transition><transition><age>0</age><sex>0</sex><from>2</from><to>3</to><percent>0.0</percent></transition><transition><age>0</age><sex>0</sex><from>3</from><to>1</to><percent>0.0</percent></transition><transition><age>0</age><sex>0</sex><from>3</from><to>2</to><percent>0.0</percent></transition><transition><age>0</age><sex>0</sex><from>3</from><to>3</to><percent>99.999985</percent></transition><transition><age>0</age><sex>1</sex><from>1</from><to>1</to><percent>100.0</percent></transition><transition><age> > 0< >>> /! >>>> age><sex>1</sex><from>1</from><to>2</to><percent>0.0</percent></transition><transition><age>0</age><sex>1</sex><from>1</from><to>3</to><percent>0.0</percent></transition><transition><age>0</age><sex>1</sex><from>2</from><to>1</to><percent>0.0</percent></transition><transition><age>0</age><sex>1</sex><from>2</from><to>2</to><percent>100.0</percent></transition><transition><age>0</age><sex>1</sex><from>2</from><to>3</to><percent>0.0</percent></transition><transition><age>0</age><sex>1</sex><from>3</from><to>1</to><percent>0.0</percent></transition><transition><age>0</age><sex>1</sex><from>3</from><to>2</to><percent>0.0</percent></transition><transition><age>0</age><sex>1</sex><from>3</from><to>3</to><percent>100.0</percent></transition><transition><age>1</age><sex>0</sex><from>1</from><to>1</to><percent>99.99999</percent></transition><transition><age>1</age><sex>0</sex><from>1</from><to>2</to><percent>0.0</percent></transition><transition><age>1</age><sex>0</sex><from>1</f > ro >>> m! >>>> ><to>3</to><percent>0.0</percent></transition><transition><age>1</age> >>>> <sex>0</sex><from>2</from><to>1</to><percent>0.0</percent></transition><transition><age>1</age><sex>0</sex><from>2</from><to>2</to><percent>99.999985</percent></transition><transition><age>1</age><sex>0</sex><from>2</from><to>3</to><percent>0.0</percent></transition><transition><age>1</age><sex>0</sex><from>3</from><to>1</to><percent>0.0</percent></transition><transition><age>1</age><sex>0</sex><from>3</from><to>2</to><percent>0.0</percent></transition><transition><age>1</age><sex>0</sex><from>3</from><to>3</to><percent>99.999985</percent></transition><transition><age>1</age><sex>1</sex><from>1</from><to>1</to><percent>100.0</percent></transition><transition><age>1</age><sex>1</sex><from>1</from><to>2</to><percent>0.0</percent></transition><transition><age>1</age><sex>1</sex><from>1</from><to>3</to><percent>0.0</percent></transition><transition><age>1</age><sex>1</sex><from>2</from><to>1</to><percent>0.0</percent></transition><transition><age>1</age><sex>1</sex><from>2</f > ro >>> m! >>>> ><to>2</to><percent>100.0</percent></transition><transition><age>1</age><sex>1</sex><from>2</from><to>3</to><percent>0.0</percent></transition><transition><age>1</age><sex>1</sex><from>3</from><to>1</to><percent>0.0</percent></transition><transition><age>1</age><sex>1</sex><from>3</from><to>2</to><percent>0.0</percent></transition><transition><age>1</age><sex>1</sex><from>3</from><to>3</to><percent>100.0</percent></transition><transition><age>2</age><sex>0</sex><from>1</from><to>1</to><percent>99.35205</percent></transition><transition><age>2</age><sex>0</sex><from>1</from><to>2</to><percent>0.6479474</percent></transition><transition><age>2</age><sex>0</sex><from>1</from><to>3</to><percent>0.0</percent></transition><transition><age>2</age><sex>0</sex><from>2</from><to>1</to><percent>0.0</percent></transition><transition><age>2</age><sex>0</sex><from>2</from><to>2</to><percent>97.101456</percent></transition><transition><age>2</age><sex>0</sex><from>2</from><to>3</to><pe > rc >>> e! >>>> nt>2.8985496</percent></transition><transition><age>2</age><sex>0</sex >>>>> <from>3</from><to>1</to><percent>0.0</percent></transition><transition><age>2</age><sex>0</sex><from>3</from><to>2</to><percent>0.0</percent></transition><transition><age>2</age><sex>0</sex><from>3</from><to>3</to><percent>100.0</percent></transition><transition><age>2</age><sex>1</sex><from>1</from><to>1</to><percent>97.82136</percent></transition><transition><age>2</age><sex>1</sex><from>1</from><to>2</to><percent>2.1786473</percent></transition><transition><age>2</age><sex>1</sex><from>1</from><to>3</to><percent>0.0</percent></transition><transition><age>2</age><sex>1</sex><from>2</from><to>1</to><percent>0.0</percent></transition><transition><age>2</age><sex>1</sex><from>2</from><to>2</to><percent>93.33336</percent></transition><transition><age>2</age><sex>1</sex><from>2</from><to>3</to><percent>6.6666408</percent></transition><transition><age>2</age><sex>1</sex><from>3</from><to>1</to><percent>0.0</percent></transition><transition><age>2</age><sex>1</sex><from>3</fr > om >>>> ! >>>> <to>2</to><percent>0.0</percent></transition><transition><age>2</age><sex>1</sex><from>3</from><to>3</to><percent>100.0</percent></transition> >>>> </transitionmatrix> >>>> >>>> ______________________________________________ >>>> R-help@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>> PLEASE do read the posting guide >>>> http://www.R-project.org/posting-guide.html >>>> and provide commented, minimal, self-contained, reproducible code. >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.