R 从公式中提取变量
是否有方法从公式中提取响应变量,即使该公式包含函数R 从公式中提取变量,r,R,是否有方法从公式中提取响应变量,即使该公式包含函数 x1 <- ~responsename as.character(x1[[2]]) x2 <- ~log(responsename) as.character(x2[[2]][[2]]) x1 似乎做你想做的事。e、 g tail(all.names(x2),1) #[1] "responsename" tail(all.names(x1),1) #[1] "responsename" tail(all.names(~sin
x1 <- ~responsename
as.character(x1[[2]])
x2 <- ~log(responsename)
as.character(x2[[2]][[2]])
x1
似乎做你想做的事。e、 g
tail(all.names(x2),1)
#[1] "responsename"
tail(all.names(x1),1)
#[1] "responsename"
tail(all.names(~sin(responsename)),1)
#[1] "responsename"
tail(all.names(~(responsename)^2),1)
#[1] "responsename"
你的术语不标准
(通常)单个“响应变量”(也称为“因变量”)位于波浪线的左侧~
波浪线右侧的(通常)多个变量称为“解释”或“预测”或“独立”变量
您的示例是没有响应变量的单边公式
您可以使用all.vars()
获取变量名@Miff,all.names()
也返回函数名
我想如果有响应变量,它通常是第一个变量,因此您可以使用all.vars(formula)[1]
,但是如果(像您的示例一样)它是一个没有响应的单面公式,则会给出第一个解释变量
更好的方法是使用attr(术语(公式),“response”)
f你说得对,公式通常用来表示统计模型。当然,terms()。然而,这只是公式的一种用途。您可能有兴趣知道,它们在R中有更广泛的用途,即捕获表达式及其环境。例如,您是否试图说您对术语“响应变量”的使用在任何方面都是标准的?
tail(all.names(x2),1)
#[1] "responsename"
tail(all.names(x1),1)
#[1] "responsename"
tail(all.names(~sin(responsename)),1)
#[1] "responsename"
tail(all.names(~(responsename)^2),1)
#[1] "responsename"
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"