2013-08-28 61 views
9

Tôi có một vấn đề với vector số của tôi và dim() trong R. Tôi muốn biết kích thước của vector X của tôi với:Không kích thước của vector số không trống trong R

dim(X) 

Tuy nhiên, đó trở về chức năng VÔ GIÁ TRỊ.

Nếu tôi gõ:

X 

Tôi có thể thấy rằng X là không có sản phẩm nào. Tại sao dim hoặc nrow báo cáo nó là "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 

Tại sao không có kích thước của X?

Trả lời

9

Vì đó là một vectơ một chiều. Nó có chiều dài. Kích thước được tính thêm áp dụng cho một vector để biến nó thành một ma trận hoặc một mảng chiều cao:

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

length(x) 
#[1] 6 

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

Sau đó, tôi gặp sự cố. Tôi muốn đặt tên cho các hàng của vectơ của tôi như thế này: > rownames (X) <- interval $ V1 Lỗi trong 'rownames <-' (' * tmp * ', value = c (35108L, 41354L, 142094L , 5816L,: cố gắng đặt 'tên gọi' trên một đối tượng không có kích thước Không thể đặt tên miền do không có kích thước của đối tượng của tôi? – user1261558

+0

Hãy thử 'tên (x) <-' – sgibb

+0

Làm như sau: 'x < - ma trận (x, length (x), 1), rownames (x) <- whatever' sẽ cung cấp cho bạn một ma trận cột mà bạn có thể áp dụng rownames. Hoặc chỉ cần làm ví dụ: 'names (x) <- any 'nếu bạn chỉ muốn một vector được đặt tên –

1

Như một mặt lưu ý, tôi đã viết một hàm trả về length nếu 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) 
     } 

Hoặc , như SimonO đã chỉ ra, bạn có thể "buộc" ma trận 1xN nếu muốn.