我遇到了一个奇怪的问题。看看这个矩阵:
theta2
[,1] [,2] [,3]
[1,] 0.1024147 0.0111102 -0.08898407
[2,] -0.2182463 0.02381744 0.1164061
[3,] -2.160951 -0.1846134 -0.2051436
[4,] -1.915053 -0.2106328 -0.2388602
[5,] -1.989786 -0.2017471 -0.2244937
[6,] -2.013182 -0.1923669 -0.2284833
[7,] -2.184123 -0.174379 -0.209156
[8,] -2.052668 -0.1971675 -0.2291237
[9,] -2.108423 -0.1987345 -0.2421515
[10,] -2.066361 -0.2162237 -0.2430083
一切都是数字。我们看看它的课程:
class(theta2)
[1] "matrix"
没问题,它是一个矩阵。我们看看它的结构:
str(theta2)
List of 30
$ : num 0.102
$ : num -0.218
$ : num -2.16
$ : num -1.92
$ : num -1.99
$ : num -2.01
$ : num -2.18
$ : num -2.05
$ : num -2.11
$ : num -2.07
$ : num 0.0111
$ : num 0.0238
$ : num -0.185
$ : num -0.211
$ : num -0.202
$ : num -0.192
$ : num -0.174
$ : num -0.197
$ : num -0.199
$ : num -0.216
$ : num -0.089
$ : num 0.116
$ : num -0.205
$ : num -0.239
$ : num -0.224
$ : num -0.228
$ : num -0.209
$ : num -0.229
$ : num -0.242
$ : num -0.243
- attr(*, "dim")= int [1:2] 10 3
有点奇怪,为什么它是" 30"? 更奇怪的是,当我检查它是否为数字时:
is.numeric(theta2)
[1] FALSE
有人能解释一下这里发生了什么吗?我不是新手,但我完全迷路了!
答案 0 :(得分:2)
也许,您从list
set.seed(25)
theta2 <- as.list(rnorm(30))
dim(theta2) <- c(10,3)
class(theta2)
#[1] "matrix"
str(theta2, list.len=3)
# List of 30
#$ : num -0.212
#$ : num -1.04
#$ : num -1.15
#[list output truncated]
# - attr(*, "dim")= int [1:2] 10 3
is.numeric(theta2)
#[1] FALSE
由于它是list
,您可以使用is.numeric
检查lapply/sapply
sapply(theta2, is.numeric)
您可unlist
theta2
并创建具有适当尺寸的matrix
theta2N <- unlist(theta2)
dim(theta2N) <- c(10,3)
is.matrix(theta2N)
#[1] TRUE
is.numeric(theta2N)
#[1] TRUE