将输出从矩阵转换为向量

扬·基斯林格(Jan Kislinger)

我想在矩阵的一个边距(在我的示例中为列)上应用函数。问题在于该函数返回矩阵apply并将其转换为向量,以便它返回矩阵。我的目标是获取三维数组。这是示例(请注意,这matrix()不是感兴趣的功能,只是一个示例):

x <- matrix(1:12, 4, 3)
apply(x, 2, matrix, nrow = 2, ncol = 2)

输出与输入完全相同。我对此有很呆板的解决方案:

library(abind)
abind2 <- function (x, ...)
  abind(x, ..., along = dim(x) + 1)
apply(x, 2, list) %>% 
  lapply(unlist) %>% 
  lapply(matrix, nrow = 2, ncol = 2) %>% 
  do.call(what = 'abind2')

我相信必须存在比这更好的东西。不包含list()ing和unlist()ing列的内容。


编辑:此外,该解决方案应该准备好可以轻松地应用于MARGIN我的解决方案没有的任何选择的任何维数组

例如,这要返回4维数组。

x <- array(1:24, c(4,3,2))
apply(x, 2:3, list) %>% 
  lapply(unlist) %>% 
  lapply(matrix, nrow = 2, ncol = 2) %>% 
  do.call(what = 'abind2')
李哲源

一点也不复杂。只需使用

array(x, dim = c(2, 2, ncol(x)))

矩阵和常规数组按列存储到物理地址中的一维长数组中。您可以重新分配维度。


好的,一般来说,这可能是您想要做的事情:

tapply(x, col(x), FUN = matrix, nrow = 2, ncol = 2)

#$`1`
#     [,1] [,2]
#[1,]    1    3
#[2,]    2    4
# 
#$`2`
#     [,1] [,2]
#[1,]    5    7
#[2,]    6    8
#
#$`3`
#     [,1] [,2]
#[1,]    9   11
#[2,]   10   12

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据从列向量转换为矩阵

来自分类Dev

Julia-将矩阵转换为向量

来自分类Dev

将向量转换为对置换矩阵

来自分类Dev

如何将向量转换为矩阵?

来自分类Dev

将 2 个向量转换为矩阵

来自分类Dev

将向量转换为 MxN 矩阵

来自分类Dev

将LibSVM输出转换为浮点向量

来自分类Dev

将summarise()输出转换为矩阵

来自分类Dev

如何将犰狳矩阵转换为向量向量?

来自分类Dev

如何将矩阵转换为向量的向量?

来自分类Dev

使用广播Julia将向量的向量转换为矩阵

来自分类Dev

将坐标向量转换为numpy二维矩阵

来自分类Dev

将长度不均匀的列表向量转换为矩阵

来自分类Dev

numpy将向量转换为二进制矩阵

来自分类Dev

将向量转换为三角矩阵

来自分类Dev

将非对称向量列表转换为矩阵

来自分类Dev

将排名向量转换为矩阵以显示模式

来自分类Dev

将向量转换为矩阵而无需回收

来自分类Dev

将SSE矩阵向量乘法代码转换为AVX

来自分类Dev

如何通过R中的名称将向量转换为矩阵?

来自分类Dev

Theano中的切片将矩阵转换为向量

来自分类Dev

将列向量转换为多列矩阵

来自分类Dev

停止“应用”将矩阵转换为R中的向量?

来自分类Dev

numpy将矩阵转换为向量并将其组合

来自分类Dev

将向量转换为三角矩阵

来自分类Dev

将非对称向量列表转换为矩阵

来自分类Dev

使用numpy将向量转换为蒙版矩阵

来自分类Dev

如何将R中的矩阵转换为向量

来自分类Dev

通过应用给定操作将矩阵转换为向量的函数