将矩阵添加到 R 中的列表

Ton*_*oni 4 arrays r image

我有一个与 .png 图像矩阵相对应的列表,没有 RGB 透明度信息。矩阵的维数是128 128 3。所以我有一个128 x 128矩阵编码每个像素中的红色色调;128 x 128编码果岭的矩阵;和128 x 128蓝调矩阵。图像中没有透明度,但要编写此 .png,我认为我需要包含128x128的矩阵1并将其标记到我的列表中以获得矩阵128 x 128 x 4

如何将这个矩阵添加到我的列表中?

compressed我有一个以这些尺寸 ( )命名的列表128 128 3,并且我尝试了多种单括号和双括号方法来包含类似的内容,matrix(rep(1, 128^2), nrow= 128)但没有成功。

我们的想法是最终将其保存为:

require(png)
writePNG(compressed, "compressed.picture")
Run Code Online (Sandbox Code Playgroud)

而不取消颜色。

Mik*_*ila 5

下面是一个示例,具体取决于您当前是否有数组或矩阵列表。看起来?writePNG你需要一个n x n x 4数组作为最终产品,所以我包含了从列表到数组的转换。

例如,这里提供了大量其他解决方案。

n <- 4

# generate matrices
r <- matrix(runif(n^2), n, n)
g <- matrix(runif(n^2), n, n)
b <- matrix(runif(n^2), n, n)
a <- matrix(1, n, n)

# list or array format for the data you have
li <- list(r, g, b)
ar <- array(c(r, g, b), dim = c(n, n, 3))

# appending the fourth matrix
li[[4]] <- a
ar1 <- array(c(ar, a), dim = c(n, n, 4))

# alternatively for array
library(abind)
ar2 <- abind(ar, a, along = 3)

# if you have a list and need an array
sapply(li, identity, simplify = "array")
Run Code Online (Sandbox Code Playgroud)