1

私は以下を持っていますmatrix

Rho <- structure(c(1, 0.466666666666667, -0.866666666666667, -0.466666666666667, 
-0.333333333333333, 0.466666666666667, 1, -0.6, -0.466666666666667, 
-0.333333333333333, -0.866666666666667, -0.6, 1, 0.333333333333333, 
0.466666666666667, -0.466666666666667, -0.466666666666667, 0.333333333333333, 
1, -0.2, -0.333333333333333, -0.333333333333333, 0.466666666666667, 
-0.2, 1), .Dim = c(5L, 5L), .Dimnames = list(c("SPX Index", "MXE2 Index", 
"USG4TR Index", "FNAR Index", "DBLCMAVL Index"), c("SPX Index", 
"MXE2 Index", "USG4TR Index", "FNAR Index", "DBLCMAVL Index")))

関数を単一の行列引数(行や列など)に適用するには、mapply()またはapply()いくつかの方法で使用する必要があると思いました。

しかし、私が入力した場合

mean(Rho)  
sd(Rho)

これにより、関数の個別のアプリケーションが返されます。

> mean(Rho)
     SPX Index     MXE2 Index   USG4TR Index     FNAR Index DBLCMAVL Index 
   -0.04000000     0.01333333     0.06666667     0.04000000     0.12000000 
> sd(Rho)
     SPX Index     MXE2 Index   USG4TR Index     FNAR Index DBLCMAVL Index 
     0.7566006      0.6902496      0.7774603      0.6282250      0.5932959 

これは私が望むものではありません:私は平均とstが欲しいです。開発者 私のマトリックスのすべての要素の

> mean(mean(Rho))
[1] 0.04

たった1つのコマンドで。

行列をベクトル/数値/その他に強制せずにそれを行う方法はありますか?

> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Australia.1252    

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
 [1] PerformanceAnalytics_1.0.4.4 xts_0.8-6                   
 [3] zoo_1.7-7                    gogarch_0.7-2               
 [5] fastICA_1.1-16               fGarch_2150.81              
 [7] fBasics_2160.81              rmgarch_0.97                
 [9] Matrix_1.0-9                 lattice_0.20-10             
[11] Kendall_2.2                  spd_1.7                     
[13] KernSmooth_2.23-8            rugarch_1.0-11              
[15] Rsolnp_1.12                  truncnorm_1.0-6             
[17] chron_2.3-42                 numDeriv_2012.3-1           
[19] MASS_7.3-18                  RcppArmadillo_0.3.4.2       
[21] Rcpp_0.9.13                  timeSeries_2160.94          
[23] timeDate_2160.95             rcom_2.2-5                  
[25] rscproxy_2.0-5              

loaded via a namespace (and not attached):
[1] boot_1.3-5       grid_2.15.1      stabledist_0.6-4 tools_2.15.1 
4

1 に答える 1

3

これが、あなたが見ているものを見ずに見ている理由であるとは断言できませんがsessionInfo()、私の推測では、PerformanceAnalyticsパッケージがロードされていると思います。

そのパッケージのzzz.Rファイルには、次のコードが含まれています。

mean.xts <- function(x,...) {
if(is.vector(x) ||is.null(ncol(x))  || ncol(x)==1){
        x<-as.numeric(x)
        mean(x,...)
    } else apply(x,2,mean.xts,...)
} 
mean.matrix <- function(x,...) {apply(x,2,mean,...)} 

sd.xts <- function(x,na.rm=FALSE) {
    if(is.vector(x) || is.null(ncol(x)) || ncol(x)==1){
        x<-as.numeric(x)
        sd(x,na.rm=na.rm)
    } else apply(x,2,sd,na.rm=na.rm)
}
sd.matrix <- function(x,na.rm=FALSE) {apply(x,2,sd,na.rm=na.rm)}

彼らがそうするのはひどいことだと思うし、私は彼らにそれを変えさせようと繰り返し試みたが、役に立たなかった。したがって、私はパッケージをボイコットします。

とにかく、そのパッケージをロードせずに新しいRセッションを開始して、再試行してください。

于 2012-10-03T17:51:01.950 に答える