2016-10-03 22 views
0

有人能帮助我在下面的场合吗?函数读取最后一个xml文件而不是完整列表

函数不是从文件夹中读取所有文件,而是仅从列表中的最后一个文件返回值。

function1<-function(directory){ 
    setwd("D:/folder") 
    filelist<-list.files(pattern = "*.xml") 
    for (i in 1:length(filelist)){ 
    doc <- xmlTreeParse(filelist[i], useInternal = TRUE) 
    rootNode<-xmlRoot(doc) 
    c4<-xpathSApply(rootNode,"//Table//node", xmlValue) 
    return(node) 
    } 
} 

在此先感谢您的答复。

+1

只要'回报(节点)达到循环被中断',所以只能'I = 0'将被评估...根据您的需要,您可以将节点添加到列表并在方法末尾返回 – digEmAll

+0

但函数返回列表中最后一个文件的值,而不是i = 0。或者它是一样的?你能编辑我的代码来修复它吗? – skywrighter

+0

你100%确定吗?我们不知道你没有提供一个可重复的例子,也没有提供'filelist','filelist [1]'的内容或'filelist [length(filelist)'的内容。你还应该使用'for(我在seq_along(filelist))'或甚至'for(xfile in filelist)'并使用'xfile'而不是'filelist [i]'。 – hrbrmstr

回答

0

找到解决方法,供参考:

setwd("D:/folder") 
xmlfiles <- list.files(pattern = "*.xml") 
sapply(seq(xmlfiles), function(i){ 
doc <- xmlTreeParse(xmlfiles[i], useInternal = TRUE) 
c4<-xmlValue(doc[["//folder//c4"]]) 
return(c4) 
}) 
相关问题