[英]How to convert a matrix from a list of matrices to an unlisted 2D numeric/matrix without flattening to a vector in R?
所以我有一个很大的矩阵列表,我希望能够将它们一个一个地放入它们的普通 2D 单个矩阵中。 因此,假设我有一个矩阵示例列表列表。 我使用此代码获得了列表:
示例列表 <- lapply(listofimages, readImage)
这是一张 512x512 .tif 示例图像,它将是矩阵列表中的矩阵之一:
该列表如下所示:
我想一次取出一个矩阵作为 2D 512x512 矩阵,但是当我尝试手动修剪其他数据时,它仍然是一个列表元素(单引号使索引不被引用):
a <- as.matrix(examplelist['1'])
b <- a[,]
当我这样做时,它会展平成一维向量:
b <- as.numeric(unlist(examplelist['1']))
这是 262144 x 1 而不是 512 x 512。
我尝试将其转换为数据表、数据框和其他一些内容,然后当我尝试将其设为数字时:
as.numeric(b)
我收到此错误:
使用 dput,它将其列为错误:
是否有一种简单的方法可以从矩阵列表中取消列出方阵,并以原始 512 x 512 形式而不是一维向量(如上所示)获得它?
我尝试修剪尺寸(如上所示)以摆脱一些其他信息,但它引发了错误。 我还尝试使用 '@' 和 '$' 仅访问数据属性,但这也不起作用。
如果我试试这个:
b <- as.data.table(examplelist['1'])
它只是给了我另一个 262144 x 1 1D 向量而不是所需的 2D 矩阵。
要提取列表的元素,您需要使用双括号。 考虑下面的例子。 让我们创建一个矩阵列表。
# Dummy list
foo <- list(first = matrix(runif(16), ncol = 4),
second = matrix(runif(16), ncol = 4))
如下所示:
# Quick peek
print(foo)
#> $first
#> [,1] [,2] [,3] [,4]
#> [1,] 0.3517863 0.1222894 0.69358440 0.7850944
#> [2,] 0.7516454 0.9881041 0.72152473 0.3035514
#> [3,] 0.8540138 0.3966431 0.40551019 0.3687717
#> [4,] 0.8872717 0.7438446 0.03258007 0.1305907
#>
#> $second
#> [,1] [,2] [,3] [,4]
#> [1,] 0.57426947 0.59617809 0.05355548 0.05962695
#> [2,] 0.60420788 0.06640785 0.43616808 0.03359352
#> [3,] 0.44216820 0.58033207 0.22686284 0.42624557
#> [4,] 0.08838313 0.27258925 0.71353586 0.76606084
现在,让我们看看仅使用一组括号的第一个元素。
# Extract one element as a list
a <- foo['first'] # Or foo[1]
# Examine output
print(a)
#> $first
#> [,1] [,2] [,3] [,4]
#> [1,] 0.3517863 0.1222894 0.69358440 0.7850944
#> [2,] 0.7516454 0.9881041 0.72152473 0.3035514
#> [3,] 0.8540138 0.3966431 0.40551019 0.3687717
#> [4,] 0.8872717 0.7438446 0.03258007 0.1305907
class(a)
#> [1] "list"
你会注意到这是一个列表。 让我们尝试使用两组括号。
# Extract one element
b <- foo[['first']] # Or foo[[1]]
# Examine output
print(b)
#> [,1] [,2] [,3] [,4]
#> [1,] 0.3517863 0.1222894 0.69358440 0.7850944
#> [2,] 0.7516454 0.9881041 0.72152473 0.3035514
#> [3,] 0.8540138 0.3966431 0.40551019 0.3687717
#> [4,] 0.8872717 0.7438446 0.03258007 0.1305907
class(b)
#> [1] "matrix"
由reprex 包(v0.3.0) 于 2019 年 6 月 18 日创建
是矩阵! 另外,它保持了矩阵的原始结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.