如何仅将列表中的行矩阵转换为 R 中的列矩阵?

How to convert only row matrices in a list to column matrices in R?

我有一个矩阵列表,其中大部分矩阵是列矩阵,但其中一些是行矩阵。如何仅将那些行矩阵转换为列矩阵?我想用 base R.

来实现这个

这是矩阵列表,其中第三个是行矩阵

x <- list(`1` = matrix(1:20, nrow=5), `2` = matrix(1:20, nrow=10), `3` = matrix(1:5, nrow=1))

如何将列表转换成这样:

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

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

$`3`
[1,]    1    
[2,]    2    
[3,]    3   
[4,]    4    
[5,]    5  

我有一个更大的数据集,因此首选高效代码!

检查矩阵的维度,如果行维度为1则转置:

(y <- lapply(x, function(x) if(dim(x)[1] == 1) { t(x)} else x))
# $`1`
#      [,1] [,2] [,3] [,4]
# [1,]    1    6   11   16
# [2,]    2    7   12   17
# [3,]    3    8   13   18
# [4,]    4    9   14   19
# [5,]    5   10   15   20
# 
# $`2`
#       [,1] [,2]
#  [1,]    1   11
#  [2,]    2   12
#  [3,]    3   13
#  [4,]    4   14
#  [5,]    5   15
#  [6,]    6   16
#  [7,]    7   17
#  [8,]    8   18
#  [9,]    9   19
# [10,]   10   20
# 
# $`3`
#      [,1]
# [1,]    1
# [2,]    2
# [3,]    3
# [4,]    4
# [5,]    5