2016-10-03 45 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) 
}) 
相關問題