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