Как выделить часть формулы в формуле в R?

Предположим, у меня есть следующая формула:

fr <- formula(y~myfun(x)+z)

Данный объект frесть ли функция в R, которая возвращает myfun(x)? Я написал свой собственный код функции (ниже ), который в основном делает то, что мне нужно, но, может быть, есть какой-то стандартный способ сделать это?

Код моей функции:

selectmds <- function(expr,funcn) {
    if(length(expr)>2) {
        a <- expr[[2]]
        b <- expr[[3]]
        if(length(a)>1) {
            if(as.name(a[[1]])==funcn) {
                if(length(grep(funcn,all.names(b)))>0) {
                    return(list(a,selectmds(b,funcn)))
                }
                else return(list(a))
            }
        }
        if(length(b)>1) {
            if(as.name(b[[1]])==funcn) {
                if(length(grep(funcn,all.names(a)))>0) {
                    return(list(b,selectmds(a,funcn)))
                }
                else return(list(b))
            }
        }
        for(i in 2:length(expr)) {
            if(length(grep(funcn,all.names(expr[[i]])))>0)return(selectmds(expr[[i]],funcn))
        }
    }
    return(NULL)
}

Вот несколько примеров:

> selectmds(formula(y~myfun(x)+z),"myfun")
[[1]]
myfun(x)


> unlist(selectmds(formula(y~myfun(x)+z+myfun(zz)),"myfun"))
[[1]]
myfun(zz)

[[2]]
myfun(x)
6
задан mpiktas 19 April 2012 в 09:00
поделиться