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

时间:2014-06-24 10:15:57

标签: r matlab

我想在R中找到与Matlab中的函数size相同的函数。

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

如果A =[ 1 2 3;4 5 6],则size(A) = 3 3

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

请帮我解决这个问题。

非常感谢。

6 个答案:

答案 0 :(得分:4)

正如您所指出的,dim并不适用于矢量。你可以使用这个函数,它将获取任意数量的向量矩阵,data.frames或列表,并找到它们的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

答案 1 :(得分:1)

尝试dim(A)它等于Matlab大小(A)函数

答案 2 :(得分:0)

如果你不知道变量类A是否是&#39;矩阵&#39;或不,然后尝试:

if (class(A) == "matrix" | class(A) == "data.frame") {
  size <- dim(A)
} else {
  size <- length(A)
}

size

这适用于您的情况。

答案 3 :(得分:0)

向量在R中是无量纲的,具有长度。 如果要把一个向量视为尺寸标注的对象(然后再处理该向量),则他/她必须使用t()(转置)(本质上使其成为一维数组)。

dim(1:10) # NULL
length(1:10) # 10
dim(t(1:10)) # 1x10

答案 4 :(得分:0)

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

> a<-c(1,2,3,4)
> NROW(a);NCOL(a)
[1] 4
[1] 1

答案 5 :(得分:0)

您可以使用以下命令:

c(NROW(w), NCOL(w))