2017-02-14 89 views
1

我有一个指向不同xml文件的URL列表,我想使用R和xml包从它们中提取一些信息。从URL列表解析xml

我想用for循环做到这一点。 我有这个代码,但它只给了我最后一个xml(numtotal),我该如何阅读所有这些代码?

for (i in seq(from = 1, to = numtotal, by = 1)){ 
    urli <- xmlParse(urls[[i]], useInternalNodes = TRUE) 
    top_numberi <- xmlRoot(urli) 
    GS = data.frame(GS = xpathSApply(top_numberi,"//a//b",xmlValue)) 
} 

其中:

  • urls是7个或更多个URL
  • numtotal列表是另一个列表的长度(数值)
+1

使用'lapply'来代替,因此一切都在列表中。 – alistaire

+1

我不明白那个理由的近距离投票。错误很明显,很容易用少量的代码来回答。几乎肯定是重复的,因为无法为for循环内部的索引赋值是一个常见的错误。 –

回答

1

for循环的每次迭代正在覆盖您的GS数据帧。代替使用的数据帧的,创建列表循环外

l = list() 

然后在元素填充循环

l[i] = xpathSApply(top_numberi,"//a//b",xmlValue) 

作为题外话内,这是一个非常基本的问题。在继续进行之前,您应该阅读一些标准的R教科书。