您的术语不符合标准(=错误!)。
(通常)单个“响应变量”(又名“因变量”)位于波浪号 ~ 的左侧。
波浪号右侧的(通常)多个变量被称为“解释性”或“预测”或“独立”变量。
您的示例是没有响应变量的单边公式。
可以使用all.vars()获取变量名; @Miff,all.names() 也返回函数名称。
我猜哪里有一个响应变量,它通常是第一个,所以你可以使用all.vars(formula)[1],但是(就像你的例子)它是一个没有响应的单边公式,这将给出第一个解释变量。
更好的是用attr(terms(formula), "response")标识响应变量
f <- y ~ x1 + x2
all.vars(f)[attr(terms(f), "response")]
# [1] "y"
f <- y ~ sin(x1) + cos(x2)
all.vars(f)[attr(terms(f), "response")]
# [1] "y"
f <- ~ x1 + x2
all.vars(f)[attr(terms(f), "response")]
# character(0)
f <- log(y) ~ x1 + x2
all.vars(f)[attr(terms(f), "response")]
# [1] "y"
如果你真的想要(最后指定的)解释变量,那么你可以使用tail(all.vars(formula),1)