2009-11-20 1 views
9

R 개체에 포함 된 개별 필드에 어떻게 액세스 할 수 있는지 알고 싶습니다. 또는, 더 정확하게, R에게 어떻게 말해 줄 수 있는지. 나는 다음과 같은 코드를 실행하면R : 액세스 필드 값

예를 들어, : 다음

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

을 나는이 출력 얻을 : 그래서

############################################### 
# 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 

을, 나는 위의 모든 값에 액세스 할 수 있어야합니다 것을 알고있다 개별적으로, 나는 그들을 지적하는 방법을 모른다. R에 저장 방법을 보여달라고 요청하는 방법이 있습니까?

나는의 라인을 따라 생각하고 :

showobjects(summary(dx.ct)) 

그리고 그것은

$formula 
$residuals 
$coefficients 
etc. 

출력하고 난 후 출력한다

showobjects(summary(dx.ct)$residuals) 

을 할 수

$min 
$1Q 
$median 
etc. 
당신이 할 수있는

감사

답변

12

다른 대안으로 attributes을 살펴보십시오. 예 :

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. 

는 전체 출력을 원하지 않는 경우

다음 names(attributes(lc.df)) 만 반환, 음, 이름.

[1] "y"   "model"  "lags"  "cval"  "res"  "teststat" "testreg" "test.name" "class" 
5

한 가지 unclass()를 사용합니다.

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)) 

를 사용하여 이름을 조사하기 :

> s$r.squared 
[1] 0.9817833 
6

unclass() 게다가, str()을 시도 :

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

그리고 특정 값을 참조. 또는 소스 코드를 읽고 다른 접근자가 어떻게하는지보십시오.

편집 :

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)) 
}) 

하고 S4 객체 요소에 대한 표준 @ 접근을 사용하여 여기에ur.df 개체에 대한 S4 클래스 메서드 summary의 소스 코드는 당신이보고 된 예입니다.

1

언급 된 Dirk Eddelbuettel처럼이 S4 유형 클래스의 경우 @를 통해 지정된 필드 값을 가져올 수 있습니다.

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