我想在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给出了矩阵的大小,但不适用于向量。
请帮我解决这个问题。
非常感谢。
迟来的答案,但请注意NROW并NCOL给出向量和矩阵/data.frames 的维度。因此,例如:
> a<-c(1,2,3,4)
> NROW(a);NCOL(a)
[1] 4
[1] 1
Run Code Online (Sandbox Code Playgroud)
向量在 R 中是无量纲的,它们有长度。如果想将向量视为一个维度对象(然后在该向量上工作),他/她必须使用t()(transpose)(本质上使其成为一维数组)。
dim(1:10) # NULL
length(1:10) # 10
dim(t(1:10)) # 1x10
Run Code Online (Sandbox Code Playgroud)
如您所述dim,不适用于向量。您可以使用此函数,该函数将采用任意数量的向量矩阵,data.frames或list并找到它们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
Run Code Online (Sandbox Code Playgroud)