经过一些实验,我发现将 r 数据帧转换为 XML 的最佳方法(对于我的代码(是使用以下脚本:
ConvertDataFrameToXML <- function(dataFrame,fileName) {
cat("<L><i>", file = fileName, append = TRUE)
write.table(dataFrame, fileName, append = TRUE, row.names=FALSE, col.names=FALSE, na="",sep="</i><i>",eol="</i></L><L><i>", quote = FALSE)
cat("</i></L>", file = fileName, append = TRUE)
}
唯一的问题是这会导致表末尾出现一个额外的空白行。有什么方法可以打开文件并删除最后 6 个字符(例如,作为脚本最后一行的替换(?
示例代码:
ConvertDataFrameToXML <- function(dataFrame,fileName) {
cat("<L><i>", file = fileName, append = TRUE)
write.table(dataFrame, fileName, append = TRUE, row.names=FALSE, col.names=FALSE, na="",sep="</i><i>",eol="</i></L><L><i>", quote = FALSE)
cat("</i></L>", file = fileName, append = TRUE)
}
a = data.frame(a= c(1,2,3),b=c(4,5,6))
fileName = "hi.txt"
file.create(fileName, overwrite = TRUE)
cat("<Tables>", file = fileName, append = TRUE)
ConvertDataFrameToXML(a,fileName)
cat("</Tables>", file = fileName, append = TRUE)
print( readChar(fileName, file.info(fileName)$size))
电流输出:
<Tables><L><i>1</i><i>4</i></L><L><i>2</i><i>5</i></L><L><i>3</i><i>6</i></L><L><i></i></L></Tables>
期望输出:
<Tables><L><i>1</i><i>4</i></L><L><i>2</i><i>5</i></L><L><i>3</i><i>6</i></L></Tables>
我想出的最简单(也是迄今为止唯一的(解决方案是将其添加到ConvertDataFrameToXML
函数的末尾:
string <- readChar(fileName, file.info(fileName)$size)
cat(sub("</i></L><L><i></i></L>", "</i></L>", string), file = fileName)
或者这个到整个代码的末尾:
string <- readChar(fileName, file.info(fileName)$size)
cat(sub("</i></L><L><i></i></L></Tables>", "</i></L></Tables>", string), file = fileName)