我可能会错过使用lapply,但我很好奇,如果在lapply中使用stop作为函数。我也欢迎任何简化我的代码的建议。
library(XML)
full_url <- "http://bustracker.muni.org/InfoPoint/XML/stopdepartures.xml"
xml_obj <- xmlParse(full_url)
departure_list <- xmlToList(xml_obj)
lapply(departure_list, function(x) x$stop$departure$edt)
答案 0 :(得分:2)
base::stop
未被调用。
它看起来像每个列表条目,但第一个名为stop
。此名称将由lapply
执行的子集操作删除,并重新应用于结果。因此,传递给函数的x
没有名为stop
的元素,但它有一个名为departure
的元素。
我想你想要这个:
lapply(departure_list, function(x) x$departure$edt)
原始数据如下所示:
<departures>
<generated timezone="-9">2015-08-25 19:38</generated>
<stop>
<id>1437</id>
<name>BAXTER and NORTHERN LIGHTS</name>
<departure mode="destination">
<edt>20:10</edt>
<sdt>20:10</sdt>
<dev>0</dev>
<text>1 MULDOON</text>
<route>
<id>1</id>
<name>CROSSTOWN</name>
</route>
<dir>I</dir>
</departure>
<departure mode="destination">
<edt>21:10</edt>
<sdt>21:10</sdt>
<dev>0</dev>
<text>1 MULDOON</text>
<route>
<id>1</id>
<name>CROSSTOWN</name>
</route>
<dir>I</dir>
</departure>
...