我想在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
给出了矩阵的大小,但它并不适用于向量。
请帮我解决这个问题。
非常感谢。
答案 0 :(得分:4)
正如您所指出的,dim
并不适用于矢量。你可以使用这个函数,它将获取任意数量的向量矩阵,data.frames或列表,并找到它们的dimension
或length
:
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)
迟来的答案,但请注意NROW
和NCOL
给出了向量和矩阵/data.frames的尺寸。因此,例如:
> a<-c(1,2,3,4)
> NROW(a);NCOL(a)
[1] 4
[1] 1
答案 5 :(得分:0)
您可以使用以下命令:
c(NROW(w), NCOL(w))