Как лучше проанализировать содержимое `call`? - PullRequest
0 голосов
/ 02 июня 2019

В пакете rootSolve функция multiroot требует входной аргумент, который представляет собой набор функций. Я нашел способ динамически определять, сколько функций содержится в этом входном аргументе, но мне нужна помощь сообщества R в отношении более чистого подхода. Пример входной функции здесь (недоопределено, но это не имеет значения, так как он разбирается)

 Kfunc<-function(x) {
    z<-c( z1<- 4*var1 -3*var2 +5*var3, z2<-8*var1 +5*var2 -2*var3   )
}

Где z1,z2,z3 - это выходы, а "varJ" - параметры, которые должны быть определены

Я придумал этот стек функций, чтобы выяснить, сколько отдельных функций находится «внутри» определения z:

bar <- parse(text = (parse(text = body(Kfunc)[2] )[[1]][3]))
length(bar[[1]])
#[1] 3
 bar[[1]][1]
#c()
 bar[[1]][2]
#(z1 <- 4 * var1 - 3 * var2 + 5 * var3)()
bar[[1]][3]
#(z2 <- 8 * var1 + 5 * var2 - 2 * var3)()

Показывает, что число уравнений равно length(bar[[1]]) - 1

Существует ли более быстрый / короткий / более чистый способ, желательно без использования неосновной библиотеки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...