У меня есть рекурсивная функция, которая извлекает данные из базы данных.База данных огромна, и рекурсия занимает некоторое время и в конечном итоге заканчивается ошибкой, поскольку я превысил стек.Я пытаюсь отладить функцию, поэтому я хотел бы ограничить рекурсию, чтобы я мог посмотреть на результат до того, как произойдет ошибка стека.
Вот эта функция.Как я могу наложить ограничение рекурсии на это?(df$relatedIdEx
- это просто символьная строка из фрейма данных, которая используется в качестве строки для поиска нового фрейма данных).Если строка уже была найдена, она пропускается - это предотвращает бесконечные циклы
get_all_dfs <- function(df) {
lapply(df$relatedIdEx, function(elem) {
if (as.character(unlist(elem)) %in% already_lookedup) {
print(paste("Already looked up ",elem," and skipping!"))
return (NULL)
} else {
already_lookedup <<- c(already_lookedup,as.character(unlist(elem)))
}
next_df <- myGIConcepts(elem)
#next_df_list<-list(next_df,my_env)
if (nrow(next_df)>1) {
get_all_dfs(next_df)
} else {
thelist<-df
}
})
}