Closed jaanos closed 9 years ago
Sem popravila oboje.
Vendar imam problem pri definiranju funkcije v programu xml.r in sicer mi pri klicanju izpiše napako: Error in UseMethod("xpathApply") : no applicable method for 'xpathApply' applied to an object of class "NULL": Te napake ne znam odpraviti in lahko tudi, da ni edina.
uvoz.r
le kliči v glavnem programu - trenutno ti ta ne naredi nič. Nekje bo treba tudi vključiti program lib/xml.r
(spet s source
) - najraje kar v uvoz.r
, kjer lahko potem kličeš funkcije iz tega programa.
V funkciji uvozi.podatkim
v xml.r
podajaš absolutno pot do datoteke Povprecnodelo_moski.html
. Tega ne počni, saj na različnih računalnikih ta pot ne bo enaka. Namesto tega podaj relativno pot:
url.podatkim <- "podatki/Povprecnodelo_moski.html"
Enkrat ko imaš tabelo, hočeš dobiti vrstice. Tu se ti zalomi, ker vrstice (<tr>
) niso neposredno pod tabelo, ampak je vmes še <tbody>
oziroma <thead>
(ta je na koncu, čeprav je glava prikazana na vrhu!). Tako lahko poiščemo kar vse značke <tr>
znotraj naše tabele (to bi sicer bil problem, če bi imeli gnezdene tabele, ampak tukaj tega ni), potem pa podatke dobivamo od prve do predzadnje vrstice:
vrsticem <- getNodeSet(tabelem[[1]], ".//tr")
seznamm <- lapply(vrsticem[1:length(vrsticem)-1], stripByPath, "./td")
Sedaj lahko narediš matriko. Imena stolpcev lahko dobiš iz zadnje vrstice:
colnames(matrikam) <- gsub("\n", " ", stripByPath(vrsticem[[length(vrsticem)]], ".//th"))
Da dobiš števila, bo treba porezati stvari v oklepajih (lahko režemo od prvega oklepaja naprej):
return(data.frame(apply(gsub("\\(.*$", "", matrikam[,2:7]),
2, as.numeric), row.names=matrikam[,1]))
Aha, zdaj pa deluje. Najlepša hvala za pomoč
V glavnem programu (
projekt.r
) kličeš vzorčna programa za naslednji fazi - tega sedaj nočeš, zato ju zakomentiraj.V datotekah CSV imaš v podatkih decimalno vejico, zato ti številke uvozi kot nize. Tako lahko pri uvozih podajaš parameter
dec = ","
, ali pa namestoread.table
uporabljaš karread.csv2
, ki privzeto uporablja decimalno vejico (in tudi podpičja za ločila med celicami).