2017-04-26 38 views
3

我在R中使用model.frame()(在函數中使用),但我無法設法通過使用-來排除一些帶有公式的變量。 例如,在與變量「Y」,「X1」,「X2」和「×3」的數據幀(數據),通過使用:從R公式中提取模型框時排除變量

model.frame(y ~ . - x3, data) 

我會得到包括所有的「y」的數據幀,「x1」,「x2」和「x3」。

有沒有辦法使用公式排除「x3」,而不是直接刪除變量:data[,-4]

+0

假設你不是在尋找y〜x1 + x2? – PhilC

+0

相關(雖然它不回答這個問題) - http://stackoverflow.com/questions/5251507/how-to-succinctly-write-a-formula-with-many-variables-from-a-data-frame – thelatemail

回答

4

我想不出如何幹淨地做到這一點超,但你可以在幾個步驟做到這一點:

# example data 
data <- data.frame(y=0,x1=1,x2=2,x3=3) 

獲取的data的背景下,充分擴大公式,然後刪除:

mf <- model.frame(y ~ ., data, subset=FALSE) 
#formula(mf) 
##y ~ x1 + x2 + x3 
model.frame(update(formula(mf), ~ . -x3), data=data) 
+2

我不確定這是否可以被認爲更「乾淨」:'model.frame(formula(terms(y〜。 - x3,data = data,simplify = TRUE)),數據)' – Roland

+0

@roland - 這很漂亮實際上好 – thelatemail