1

多くのベクトルを持つデータ フレームがあり、次のような数式を記述する必要があります。

y ~ a,b,c,..

ここで、a、b、c.. は、y とフレームのインデックスを含む最初のベクトルを除くすべてのベクトルの名前です。私は次のようなことをしました:

    xnam <- paste(colnames(data)[], sep="")
    fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+")))

(以前にデータのコピーからベクトル y を削除した場所)。問題は、この方法でインデックス ベクトルも取得することです。どうすれば削除できますか? なにか提案を?

どうもありがとう!

4

1 に答える 1

1

数式インターフェイスは.、 for を解釈して、他のすべての変数を指定します。特定の変数を削除するには、次のようにしsubsetます。

summary(lm(hp~.,data=subset(mtcars,select=-qsec)))

Call:
lm(formula = hp ~ ., data = subset(mtcars, select = -qsec))

Residuals:
    Min      1Q  Median      3Q     Max 
-39.100 -15.833   1.593  17.677  33.582 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  47.4615   127.7481   0.372  0.71380   
mpg          -2.1924     1.9776  -1.109  0.27957   
cyl           8.8756     9.4878   0.935  0.35970   
disp          0.4537     0.1335   3.399  0.00258 **
drat         -4.3969    15.7096  -0.280  0.78218   
wt          -30.4149    15.2230  -1.998  0.05823 . 
vs           24.1493    18.2235   1.325  0.19871   
am           11.1254    19.2025   0.579  0.56823   
gear          7.5968    14.2172   0.534  0.59847   
carb         19.2907     6.5193   2.959  0.00725 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 25.41 on 22 degrees of freedom
Multiple R-squared: 0.9025,     Adjusted R-squared: 0.8627 
F-statistic: 22.63 on 9 and 22 DF,  p-value: 3.923e-09 

「.」を解釈しない関数を使用している場合setdiffは、不要な変数を削除するために関数を変更できます。

as.formula(paste("hp ~",paste(setdiff(names(mtcars),c("hp","qsec")),collapse="+")))
hp ~ mpg + cyl + disp + drat + wt + vs + am + gear + carb
于 2013-02-22T10:42:03.157 に答える