Ich bin völlig überfordert. Ich versuche, eine große XML-Datei mithilfe von Schließfunktionen zu lesen. Das einzige Problem ist, ich bin nicht in der Lage, eine Möglichkeit zu finden, einen Zähler innerhalb der Schließung zu erstellen, so dass ich den Zähler als ID für den Speicherort verwenden kann. Ich habe mir den folgenden Code ausgedacht, der offensichtlich einige (oder vielleicht ernsthafte) Probleme hat.R Erstellen Sie einen Schließzähler
branchFunction <- function() {
store <- new.env()
func <- function(x, ...) {
new_counter <- function() {
i <- 0
function() {
i <<- i + 1
i
}
}
ns <- getNodeSet(x,path = "//event[@type='left link' or @type='entered link']")
value <- lapply(ns, xmlAttrs)
store[[i]] <- value
}
getStore <- function() { as.list(store) }
list(event = func, getStore=getStore)
}
myfunctions <- branchFunction()
xmlEventParse(file = "xml.xml", handlers = NULL, branches = myfunctions)
#to see what is inside
l <- myfunctions$getStore()
Hier ist das Beispiel data.
Dadurch mir den Fehler geben 'Fehler im Speicher [[i]] <- Wert: Objekt ' i‘nicht Called aus gefunden: (function (x, ...) { new_counter <- (function() { i <- 0 function() { i << - i + 1 i } })() ns <- getNodeSet (x, path = "// Ereignis [@ type = 'link link' oder @ type = 'eingegebener Link']") Wert <- lapply (ns, xmlAttrs) Speichern [[i]] <- Wert }) () ' –
Gandalf
Zusammen mit Ihrer obigen Lösung, macht dies einen Sinn? 'store [[new_counter()]] <- value' – Gandalf
Jetzt gibt mir das einen neuen Fehler:' Fehler im Speicher [[new_counter()]] <- Wert: falsche Argumente für Umgebungssubassignment' – Gandalf