我有一个我创建的矩数组表.列表中的矩阵有不同的维度,我想用NA填充没有3x3维度的矩阵.

我在下面列出了我的预期结果.我想在if语句中包含这一点,如果列表中的矩阵没有3x3维,我想在这些矩阵中添加空列/行,并用NA填充它们.在base r中有没有一种有效的方法来实现这一点?

# Created Matrices
m1 <- matrix(1:9, 3,3)
m2 <- matrix(1:4, 2,2)
m3 <- matrix(1:3, 3, 1)

# Matrices into a list
l1 <- list(m1, m2, m3)
l1


# Expected Matrices and outputs
m2_new <- matrix(c(1,2,NA,3, 4, rep(NA, 4)), 3,3)
m3_new <- matrix(c(1,2,3,rep(NA, 6)), 3,3)
expected <- list(m1, m2_new, m3_new)

推荐答案

一个选项是根据row/col索引创建一个NA matrixreplace的值,并使用"x"标记

dummy <- matrix(ncol = 3, nrow = 3)
l2 <- lapply(l1, function(x) replace(dummy, cbind(c(row(x)), c(col(x))), x))

-判断

> all.equal(l2, expected)
[1] TRUE

R相关问答推荐

在图内移动y轴上的标签

为什么以及如何修复Mapview不显示所有点并且st_buffer合并一些区域R?

在ggplot的注释表格中突出显示最大值

具有多个依赖变量/LHS的逻辑模型

从嵌套列表中智能提取线性模型系数

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

查找图下的面积

基于不同组的列的相关性

然后根据不同的列值有条件地执行函数

根据元素和前一个值之间的差值过滤矩阵的元素

合并DFS列表并将索引提取为新列

`lazy_dt`不支持`dplyr/across`?

用R ggplot2求上、下三角形中两个变量的矩阵热图

从多面条形图中删除可变部分

正则表达式在第二个管道和第二个T之后拆分R中的列

我们如何在R中透视数据并在之后添加计算

按组内中位数分类

如何为混合模型输出绘制不同的线型?

TidyVerse中长度不等的列结合向量

ArrangeGrob()和类似的替代方法不接受Grob列表.在Grid.Draw,返回:glist中的错误(...):仅允许在glist";中使用Grobs;