簡體   English   中英

R中沒有非空數值向量的維

[英]No dimensions of non-empty numeric vector in R

我的數字向量和R中的dim()有問題。我想知道向量X的尺寸:

dim(X)

但是,該函數返回NULL。

如果輸入:

X

我可以看到X不為空。 為何暗淡或nrow將其報告為“ 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

為什么沒有X的尺寸?

因為它是一維向量。 它有長度。 維度是應用於矢量的額外屬性,可將其轉換為矩陣或更高維的數組:

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

length( x )
#[1] 6

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

作為附帶說明,我編寫了一個函數,如果dim==NULL ,則返回length

編輯2019年6月:

我重寫了此函數,以便它不會base::dim任何現有函數中對base::dim調用。

# return dim() when it's sensible and length() elsewise
#  let's not allow multiple inputs, just like base::dim, base::length
# Interesting fact --  the function  "dim" and the function  " dim<-" are different
# primitives, so this function here doesn't interfere with the latter.
dim <- function(item) {
        if (is.null(base::dim(item)) ) { 
            dims<-length(item)  
            } else{
                dims  <- base::dim(item)  
                }
    return(dims)
    }

以下是原始發布的代碼

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)
        }

或者,正如SimonO指出的,如果需要,您可以“強制”使用1xN矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM