2016-03-22 1 views
1

Я полностью из глубины этого. Я пытаюсь прочитать большой XML-файл, используя функции закрытия. Единственная проблема: я не могу определить способ создания счетчика в закрытии, так что я могу использовать счетчик как идентификатор для местоположения магазина. Я придумал следующий код, который, очевидно, имеет некоторые (или, может быть, серьезные) проблемы.R Создать счетчик закрытий

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() 

Образец data.

ответ

1

Это в значительной степени это, вы просто хотите вызвать функцию, чтобы получить это происходит,

new_counter <- (function() { 
    i <- 0 
    function() { 
    i <<- i + 1 
    i 
    } 
})() 
+0

Делать это дает мне сообщение об ошибке 'Ошибка в магазине [[я]] <- значение: объект ' я»не найден Called из: (функции (х, ...) { new_counter <- (функция() { я <- 0 функция() { я << - я + 1 я } })() ns <- getNodeSet (x, путь = "// событие [@ type = 'левая ссылка' или @ type = 'введенная ссылка']") value <- lapply (ns, xmlAttrs) магазин [[i]] <- значение }) (<указатель: 0x0000000016af3f40>) ' – Gandalf

+0

Наряду с вашим исправлением, имеет ли это смысл? 'магазин [[new_counter()]] <- value' – Gandalf

+0

Теперь это дает мне новую ошибку:' Ошибка в магазине [[new_counter()]] <- значение: неправильные аргументы для перенастройки окружения' – Gandalf