Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从公式中提取变量_R - Fatal编程技术网

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"