====== read half matrix data ====== * file: read_tag-halfMatrix.r * document page: 37 \\ **code:** #----open XML package------------------------------------------------- library(XML) #----read data between an XML tag------------------------------------- filename = "D:/Heidi/Master/R_Daten/XML/PairwiseFst_XML2.xml" tag = "//Fst" doc = xmlTreeParse(filename, useInternal = TRUE) ch = getNodeSet(doc, tag) subDoc = xmlDoc(ch[[1]]) tagData <- xpathApply(subDoc, tag, xmlValue) free(subDoc) #----convert string data (half matrix) to a numeric matrix------------- #----split string---- tagData2 <- as.character(tagData) tagData3 <- strsplit(tagData2, "\n") tagMatrix <- as.matrix(as.data.frame(tagData3)) tagMatrix <- tagMatrix[4:nrow(tagMatrix)] tagMatrix <- gsub(" + ", " ", tagMatrix) # trim white space Data <- strsplit(tagMatrix, " ") #----to numeric matrix---- Row <- length(Data) Matrix <- as.matrix(as.data.frame(Data[1])) Matrix <- rbind(Matrix, matrix(NA, ncol=1, nrow=(Row-1))) Matrix <- Matrix[3:nrow(Matrix),] numericList <- as.numeric(Matrix) numericMatrix <- t(as.matrix(numericList)) for(n in 2:(Row)){ nextrow <- as.matrix(as.data.frame(Data[n])) nextrow <- rbind(nextrow, matrix(NA, ncol=1, nrow=(Row-n))) nextrow <- nextrow[3:nrow(nextrow),] numericList <- as.numeric(nextrow) numericMatrix <- rbind(numericMatrix, t(as.matrix(numericList))) } numericMatrix ===== read half matrix out of full matrix ===== * file: read_tag-halfOutOfFullMatrix.r \\ **code:** #----open XML package----------------------------------------------------------- library(XML) #----read data between an XML tag----------------------------------------------- filename = "D:/Master/R_Daten/XML/PairwiseFst_XML2.xml" #not correct!!!! tag = "//Fst" doc = xmlTreeParse(filename, useInternal = TRUE) ch = getNodeSet(doc, tag) subDoc = xmlDoc(ch[[1]]) tagData <- xpathApply(subDoc, tag, xmlValue) free(subDoc) #----convert string data (half out of a full matrix) to a numeric matrix------ #----split string---- tagData2 <- as.character(xmlText) tagData3 <- strsplit(tagData2, "\n") tagMatrix <- as.matrix(as.data.frame(tagData3)) tagMatrix <- gsub(" + ", " ", tagMatrix) # trim white space tagMatrix <- tagMatrix[4:(nrow(tagMatrix)-1)] Data <- strsplit(tagMatrix, " ") #----to numeric matrix---- Row <- length(Data) Matrix <- matrix(NA, ncol=1, nrow=Row) numericList <- as.numeric(Matrix) numericMatrix <- t(as.matrix(numericList)) for(n in 2:(Row)){ nextrow <- as.matrix(as.data.frame(Data[[n]][3:(n+1)])) nextrow <- rbind(nextrow, matrix(NA, ncol=1, nrow=(Row-(n-1)))) #nextrow <- nextrow[3:nrow(nextrow),] numericList <- as.numeric(nextrow) numericMatrix <- rbind(numericMatrix, t(as.matrix(numericList))) } numericMatrix