2013-08-28 14 views
9

Ho un problema con il mio vettore numerico e dim() in R. Voglio sapere le dimensioni del mio vettore X con:Nessun dimensioni del vettore numerico non vuoto in R

dim(X) 

tuttavia, che restituisce la funzione NULLO.

Se digito:

X 

posso vedere che la X non è vuota. Perché dim o nrow lo segnala come "NULL"?

Part of X: 
[93486] 6.343e-01 6.343e-01 6.343e-01 6.343e-01 6.343e-01 6.343e-01 6.346e-01 
[93493] 6.346e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 
[93500] 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 
[93507] 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 
[93514] 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 6.347e-01 
[93521] 6.347e-01 6.347e-01 6.347e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 
[93528] 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 
[93535] 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 
[93542] 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 
[93549] 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 6.348e-01 
[93556] 6.348e-01 6.348e-01 6.349e-01 6.349e-01 6.349e-01 6.349e-01 6.349e-01 
[93563] 6.349e-01 6.349e-01 6.349e-01 6.349e-01 6.349e-01 6.349e-01 6.349e-01 
[93570] 6.349e-01 6.349e-01 6.349e-01 6.349e-01 6.349e-01 6.349e-01 6.349e-01 

> dim(X) 
NULL 
> class(X) 
[1] "numeric" 
> nrow(pvals_vector) 
NULL 

Perché non ci sono dimensioni di X?

risposta

9

Perché è un vettore unidimensionale. Ha lunghezza. Le dimensioni sono attributi extra applicati ad un vettore per trasformarlo in una matrice o di un più alto array bidimensionale:

x <- 1:6 
dim(x) 
#NULL 

length(x) 
#[1] 6 

dim(matrix(x , 2 , 3)) 
#[1] 2 3 
+0

Quindi ho un problema. Voglio dare nomi alle righe del mio vettore in questo modo: > rownames (X) <- pvals $ V1 Errore in 'rownames <-' (' * tmp * ', valore = c (35108L, 41354L, 142094L , 5816L,: tentare di impostare 'nomi di ragazzi' su un oggetto senza dimensioni Impossibile impostare i nomi dei discendenti a causa delle dimensioni del mio oggetto? – user1261558

+0

Prova 'names (x) <-'. – sgibb

+0

Fai così: 'x < - matrix (x, length (x), 1); rownames (x) <- whatever' che ti darà una matrice a una colonna alla quale puoi applicare i nomi dei personaggi. O semplicemente fai per esempio: 'names (x) <- qualunque sia 'se vuoi solo un vettore con nome –

1

Come nota a margine, ho scritto una funzione che restituisce length se dim==NULL:

function(items) { 

     dims<-vector('list',length(items)) 
     names(dims)<-items 
     for(thing in seq(1,length(items))) { 
       if (is.null(dim(get(items[thing])))) { 

         dims[[thing]]<-length(get(items[thing])) 
         } else{ 
           #load with dim() 
           dims[[thing]]<-dim(get(items[thing])) 
           } 
       } 
     return(dims) 
     } 

Or , come ha sottolineato SimonO, se lo desideri puoi "forzare" una matrice 1xN.

Problemi correlati