问题 R中没有非空数字向量的维度


我的数字向量有问题 dim() 在R.我想知道我的矢量X的尺寸:

dim(X)

但是,该函数返回NULL。

如果我输入:

X

我可以看到X不是空的。为什么dim或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没有尺寸?


5817
2017-08-28 07:46


起源



答案:


因为它是一维向量。它有长度。尺寸是应用于矢量以将其转换为矩阵或更高维数组的额外属性:

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

length( x )
#[1] 6

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

11
2017-08-28 07:47



然后我有一个问题。我想给我的矢量行命名如下:> rownames(X)< - pvals $ V1错误 rownames<-(*tmp*,value = c(35108L,41354L,142094L,5816L,:尝试在没有尺寸的对象上设置'rownames'由于没有对象的尺寸,无法设置rownames? - user1261558
尝试 names(x)<-。 - sgibb
像这样做: x <- matrix( x , length(x) , 1 ); rownames(x) <- whatever 这将为您提供一个列列表,您可以应用rownames。或者只是做例如: names(x) <- whatever 如果你只想要一个命名向量。 - Simon O'Hanlon
啊......谢谢!名字()它! - user1261558
@ user1261558好极了!此外,因为你在这里相对较新,你可能想阅读 关于 和 常问问题 关于SO如何运作。 StackOverflow对每个人都更有价值,如果你收到解决问题的答案,你可以通过点击小复选标记或提出有用的答案来接受它。您完全没有义务这样做,但如果答案确实可以解决您的问题,那么这是“回馈”网站的好方法。谢谢! - Simon O'Hanlon


答案:


因为它是一维向量。它有长度。尺寸是应用于矢量以将其转换为矩阵或更高维数组的额外属性:

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

length( x )
#[1] 6

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

11
2017-08-28 07:47



然后我有一个问题。我想给我的矢量行命名如下:> rownames(X)< - pvals $ V1错误 rownames<-(*tmp*,value = c(35108L,41354L,142094L,5816L,:尝试在没有尺寸的对象上设置'rownames'由于没有对象的尺寸,无法设置rownames? - user1261558
尝试 names(x)<-。 - sgibb
像这样做: x <- matrix( x , length(x) , 1 ); rownames(x) <- whatever 这将为您提供一个列列表,您可以应用rownames。或者只是做例如: names(x) <- whatever 如果你只想要一个命名向量。 - Simon O'Hanlon
啊......谢谢!名字()它! - user1261558
@ user1261558好极了!此外,因为你在这里相对较新,你可能想阅读 关于 和 常问问题 关于SO如何运作。 StackOverflow对每个人都更有价值,如果你收到解决问题的答案,你可以通过点击小复选标记或提出有用的答案来接受它。您完全没有义务这样做,但如果答案确实可以解决您的问题,那么这是“回馈”网站的好方法。谢谢! - Simon O'Hanlon


作为旁注,我写了一个返回的函数 length 如果 dim==NULL :

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矩阵。


1
2017-08-28 11:56