Я использую R для извлечения данных из XML, который выглядит следующим образом («atbat» является более узлом, чем «поле»):извлечение XML с R
<atbat num="1" b="2" s="2" o="1" start_tfs="173619" start_tfs_zulu="2014-06-
01T17:36:19Z" batter="543706" stand="R" b_height="5-8" pitcher="543699"
p_throws="R" des="Daniel Robertson grounds out to first baseman Adam
LaRoche.
<pitch des="Ball" des_es="Bola mala" id="3" type="B" tfs="173525"
tfs_zulu="2014-06-01T17:35:25Z" x="129.61" y="114.84" event_num="3"
sv_id="140601_133543" play_guid="" start_speed="90.8" end_speed="84.1"
Я использую следующую функцию R и вызов чтобы извлечь все данные, связанные с веревок (это данные бейсбол):
grabXML <- function(XML.parsed, field){
parse.field <- getNodeSet(XML.parsed, paste("//", field, sep=""))
results <- t(sapply(parse.field, function(x) xmlAttrs(x)))
if(typeof(results)=="list"){
do.call(rbind.fill, lapply(lapply(results, t), data.frame,
stringsAsFactors=F))
}
else {
as.data.frame(results, stringsAsFactors=F)
}
}
xmlGame <- xmlParse(URL)
grabXML(xmlGame, "pitch")
функция делает именно то, что я хочу, за исключением того, что она возвращает все данные основного тона для игры. Я хотел бы иметь возможность указать идентификатор кувшина (обратите внимание, что кувшины идентифицируются шестизначным числом в XML) и функция возвращает только данные шага. Мне интересно, нужен ли мне цикл «для», или если проблема с идентификатором питчера в более высоком узле вызовет проблему.