質問
私は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.
ありがとう
カール
解決
別の方法として、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"
他のヒント
unclass()
ほか、str()
を試してみてください。またはその他のアクセサがそれを行う方法を確認するために、ソースコードを読みます。
の編集:のここで例えば、あなたが見ていたsummary
オブジェクトのS4クラスメソッドur.df
のソースコード:
setMethod("summary", "ur.df", function(object){
return(new("sumurca", classname="ur.df", test.name=object@test.name,\
testreg=object@testreg, teststat=object@teststat, cval=object@cval, \
bpoint=NULL, signif=NULL, model=object@model, type=NULL, auxstat=NULL, \
lag=NULL, H=NULL, A=NULL, lambda=NULL, pval=NULL, V=NULL, W=NULL, P=NULL))
})
、それはS4オブジェクト要素のための標準@
アクセサを使用します。
あなたができることの一つは、使用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))
それを調査するために使用名:
> names(unclass(s))
[1] "call" "terms" "residuals" "coefficients" "aliased" "sigma" "df" "r.squared" "adj.r.squared"
[10] "fstatistic" "cov.unscaled"
そして、特定の値を参照します:
> s$r.squared
[1] 0.9817833
ディルク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
所属していません StackOverflow