2013-08-28 13 views
9

Mam problem z moim numerycznej wektora i dim() w R. Chcę znać wymiary mojego wektora X z:Brak wymiary niż pustym wektorem numerycznej w R

dim(X) 

jednak, że wróci funkcyjnych ZERO.

Gdybym wpisać:

X 

widzę, że X nie jest pusta. Dlaczego dim lub nrow zgłaszają go jako "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 

Dlaczego nie ma wymiarów X?

Odpowiedz

9

Ponieważ jest to jednowymiarowy wektor. Ma długość. Wymiary są dodatkowe atrybuty stosowane do wektora aby przekształcić go w matrycy lub wyższej tablicy wymiarowej:

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

length(x) 
#[1] 6 

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

Potem mam problem. Chcę podać nazwy wierszy mojego wektora w ten sposób: > rownames (X) <- pasy $ V1 Błąd w 'rownames <-' (' * tmp * ', wartość = c (35108L, 41354L, 142094L , 5816L,: próba ustawienia "rownames" na obiekcie bez wymiarów Nie można ustawić rownames ze względu na brak wymiarów mojego obiektu? – user1261558

+0

Spróbuj 'names (x) <-'. – sgibb

+0

Zrób tak: 'x < - macierz (x, długość (x), 1); rownames (x) <- cokolwiek, co da ci macierz z jedną kolumną, do której możesz zastosować rownames, lub po prostu wykonaj na przykład: 'names (x) <- cokolwiek 'jeśli chcesz tylko nazwanego wektora –

1

Na marginesie, napisałem funkcję, która zwraca length jeśli 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 , jak zauważył SimonO, możesz "wymusić" matrycę 1xN, jeśli chcesz.

Powiązane problemy