即使該公式包含函數,是否可以從公式中提取響應變量?從公式中提取變量
x1 <- ~responsename
as.character(x1[[2]])
x2 <- ~log(responsename)
as.character(x2[[2]][[2]])
這兩種方法都給出了所需的答案("responsename"
)。但有沒有辦法在或的情況下自動獲得相同的答案?
PS:假設公式總是~ responsename
或~ f(responsename)
,沒有+
等
即使該公式包含函數,是否可以從公式中提取響應變量?從公式中提取變量
x1 <- ~responsename
as.character(x1[[2]])
x2 <- ~log(responsename)
as.character(x2[[2]][[2]])
這兩種方法都給出了所需的答案("responsename"
)。但有沒有辦法在或的情況下自動獲得相同的答案?
PS:假設公式總是~ responsename
或~ f(responsename)
,沒有+
等
tail(all.names(x1),1)
似乎做你想要什麼。例如
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(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)
你說的很對,公式通常用於表達統計模型。當然,'terms()'返回一個帶有「response」屬性的對象,它位於左側。但是,這只是公式的一種用法。您可能有興趣知道它們在R中有更廣泛的用途,這是爲了捕捉表達式及其環境。請參閱http://adv-r.had.co.nz/Expressions.html – AndrewMacDonald
您是否試圖說您對「響應變量」這個術語的使用以任何方式標準化? – user20637