如何知道R中矩阵或向量的维数?

Jam*_*e H 1 matlab r

我想在R中找到与sizeMatlab中的功能相同的功能。

在Matlab中,如果A = [ 1 2 3 4 5],则size(A) = 1 5

如果A =[ 1 2 3;4 5 6]是的话size(A) = 3 3

在R中,我发现函数dim给出了矩阵的大小,但不适用于向量。

请帮我解决这个问题。

非常感谢。

iod*_*iod 7

迟来的答案,但请注意NROWNCOL给出向量和矩阵/data.frames 的维度。因此,例如:

> a<-c(1,2,3,4)
> NROW(a);NCOL(a)
[1] 4
[1] 1
Run Code Online (Sandbox Code Playgroud)


BiX*_*XiC 6

试试dim(A)它等于 Matlab size(A) 函数

  • 尽管标题确实指的是矩阵,但 OP 建议(正确地)`dim` 不适用于 [单维] 向量。 (3认同)

Erd*_*HER 6

向量在 R 中是无量纲的,它们有长度。如果想将向量视为一个维度对象(然后在该向量上工作),他/她必须使用t()(transpose)(本质上使其成为一维数组)。

dim(1:10) # NULL
length(1:10) # 10
dim(t(1:10)) # 1x10
Run Code Online (Sandbox Code Playgroud)


Sim*_*lon 5

如您所述dim,不适用于向量。您可以使用此函数,该函数将采用任意数量的向量矩阵,data.frames或list并找到它们dimensionlength

DIM <- function( ... ){
    args <- list(...)
    lapply( args , function(x) { if( is.null( dim(x) ) )
                                    return( length(x) )
                                 dim(x) } )
}

# length 10 vector
a <- 1:10
# 3x3 matrix
b <- matrix(1:9,3,3)
# length 2 list
c <- list( 1:2 , 1:100 )
# 1 row, 2 column data.frame
d <- data.frame( a =1 , b = 2 )


DIM(a,b,c,d)
#[[1]]
#[1] 10

#[[2]]
#[1] 3 3

#[[3]]
#[1] 2

#[[4]]
#[1] 1 2
Run Code Online (Sandbox Code Playgroud)