2009-11-20 14 views
9

Ich möchte wissen, wie ich auf die einzelnen Felder zugreifen kann, die in einem R-Objekt enthalten sind. Oder, genauer gesagt, wie man R dazu bringt, mir zu sagen, wie.R: Zugriff Feldwerte

Zum Beispiel, wenn ich den folgenden Code ausführen:

dx.ct <- ur.df(dat1[,'dx'], lags=3, type='trend') 
summary(dx.ct) 

dann bekomme ich diese Ausgabe:

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression trend 


Call: 
lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag) 

Residuals: 
    Min  1Q Median  3Q  Max 
-0.46876 -0.24506 0.02420 0.15752 0.66688 

Coefficients: 
      Estimate Std. Error t value Pr(>|t|) 
(Intercept) 1.099231 0.561377 1.958 0.0606 . 
z.lag.1  -0.239438 0.141093 -1.697 0.1012 
tt   -0.019831 0.007799 -2.543 0.0170 * 
z.diff.lag1 -0.306326 0.193001 -1.587 0.1241 
z.diff.lag2 -0.214229 0.186135 -1.151 0.2599 
z.diff.lag3 -0.223433 0.179040 -1.248 0.2228 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.3131 on 27 degrees of freedom 
Multiple R-squared: 0.3326,  Adjusted R-squared: 0.209 
F-statistic: 2.691 on 5 and 27 DF, p-value: 0.04244 


Value of test-statistic is: -1.697 2.4118 3.2358 

Critical values for test statistics: 
     1pct 5pct 10pct 
tau3 -4.15 -3.50 -3.18 
phi2 7.02 5.13 4.31 
phi3 9.31 6.73 5.61 

So weiß ich, dass ich im Stande sein sollte vor allem die Werte für den Zugriff auf individuell weiß ich nicht, wie ich auf sie zeigen soll. Gibt es eine Möglichkeit, R zu bitten, mir zu zeigen, wie sie gelagert werden?

ich entlang der Linien von denke:

showobjects(summary(dx.ct)) 

Und dann gibt es

$formula 
$residuals 
$coefficients 
etc. 

und dann kann ich

showobjects(summary(dx.ct)$residuals) 

tun, die gibt dann

$min 
$1Q 
$median 
etc. 

Dank
Karl

Antwort

12

Als eine weitere Alternative werfen Sie einen Blick auf attributes. z.B.

example(ur.df) 
attributes(lc.df) #lc.df is an ur.df object created during by example. 

$y 
[1] 10.4831 10.4893 10.5022 10.5240 10.5329 10.5586 10.5190 10.5381 
[9] 10.5422 10.5361 10.5462 10.5459 10.5552 10.5548 10.5710 10.5861 
[17] 10.5864 10.5802 10.6006 10.6168 10.6275 10.6414 10.6629 10.6758 
[25] 10.6881 10.7240 10.7143 10.7222 10.7156 10.6964 10.6990 10.7081 
[33] 10.7142 10.7078 10.7073 10.6954 10.6910 10.6967 10.7015 10.7083 
[41] 10.7127 10.6922 10.6874 10.6989 10.7224 10.7452 10.7462 10.7663 
[49] 10.7633 10.7737 10.8282 10.7872 10.8015 10.8139 10.7909 10.8029 
[57] 10.7868 10.7979 10.8007 10.8008 10.7991 10.7956 10.8005 10.8160 
[65] 10.8260 10.8405 10.8482 10.8633 10.8633 10.8615 10.8732 10.8649 
[73] 10.8793 10.8909 10.8938 10.9116 10.9202 10.9409 10.9663 10.9700 
[81] 10.9808 10.9878 11.0048 11.0272 11.0420 11.0701 11.0751 11.0964 
[89] 11.1069 11.1123 11.1231 11.1223 11.1303 11.1307 11.1389 11.1325 
[97] 11.1261 11.1232 11.1220 

$model 
[1] "trend" 

$lags 
[1] 3 

# etc. 

Wenn Sie die volle Leistung nicht wollen, dann names(attributes(lc.df)) gibt nur die, äh, Namen.

5

Eine Sache, die Sie ist unclass() verwenden tun können.

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) 
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) 
group <- gl(2,10,20, labels=c("Ctl","Trt")) 
weight <- c(ctl, trt) 
anova(lm.D9 <- lm(weight ~ group)) 
s <- summary(lm.D90 <- lm(weight ~ group - 1)) 

Verwenden Sie Namen, es zu untersuchen:

> names(unclass(s)) 
    [1] "call"   "terms"   "residuals"  "coefficients" "aliased"   "sigma"   "df"   "r.squared"  "adj.r.squared" 
[10] "fstatistic" "cov.unscaled" 

Und dann einen bestimmten Wert Referenz:

> s$r.squared 
[1] 0.9817833 
6

Neben unclass(), versuchen str(). Oder lesen Sie den Quellcode, um zu sehen, wie die anderen Accessoren es tun.

Edit: Dies ist zum Beispiel der Quellcode der S4-Klasse Methode summary für die ur.df Objekt Sie suchen:

setMethod("summary", "ur.df", function(object){ 
    return(new("sumurca", classname="ur.df", [email protected],\ 
    [email protected], [email protected], [email protected], \ 
    bpoint=NULL, signif=NULL, [email protected], type=NULL, auxstat=NULL, \ 
    lag=NULL, H=NULL, A=NULL, lambda=NULL, pval=NULL, V=NULL, W=NULL, P=NULL)) 
}) 

und es verwendet eine Standard-@ Accessor für S4 Objektelemente.

1

Sie können den angegebenen Feldwert über @ für diese S4-Typklasse wie Dirk Eddelbuettel erhalten.

summary(dx.ct)@teststat 

       tau3  phi2  phi3 
statistic -1.668368 0.9731316 1.444461 

summary(dx.ct)@cval 

1pct 5pct 10pct 
tau3 -3.96 -3.41 -3.12 
phi2 6.09 4.68 4.03 
phi3 8.27 6.25 5.34