R中的子集公式对象
给定下面的任何R中的子集公式对象,r,regression,subset,lm,R,Regression,Subset,Lm,给定下面的任何公式对象(例如f),我想知道如何将tilda符号及其后的所有内容分离,并将其转换为公式对象 我的期望输出仅在本例中是:~es.type+weeks作为公式对象 注意:f可以是任何公式,上面的f只是一个例子。我在寻找一个通用的解决方案 f <- formula(dint ~ es.type+weeks) # Only as an example g <- paste0(f[[1]], f[[3]]) # No success as.formula(g) # No
公式
对象(例如f
),我想知道如何将tilda符号及其后的所有内容分离,并将其转换为公式
对象
我的期望输出仅在本例中是:~es.type+weeks
作为公式
对象
注意:f
可以是任何公式,上面的f
只是一个例子。我在寻找一个通用的解决方案
f <- formula(dint ~ es.type+weeks) # Only as an example
g <- paste0(f[[1]], f[[3]]) # No success
as.formula(g) # No success
f一个选项是根据公式中的术语数量删除术语
g <- formula(drop.terms(terms(f), 3))
g
#~es.type + weeks
f1 <- formula(dint ~ es.type:weeks)
formula(drop.terms(terms(f1), 3))
#~es.type:weeks
您可以直接操作公式:
f您可能需要all.vars(f)
这似乎不必要地复杂
form1 <- function(form) {
i1 <- length(terms(form)) + 1
formula(drop.terms(terms(form), i1))
}
f1 <- formula(dint ~ es.type+weeks+dd)
f2 <- formula(dint ~ es.type+weeks)
form1(f1)
#~es.type + weeks + dd
form1(f2)
#~es.type + weeks
update(form1(f2), ~time +.)
#~time + es.type + weeks