r - 将矩阵列表除以矩阵
问题描述
我有一个矩阵列表,我喜欢将每个矩阵中的值除以不同的值。
l1 <- list(1,2,3,4,5,6)
l2 <- list(7,8,9,10,11,12)
mat <- Map(
function(x, y) outer(unlist(x), unlist(y), `+`) / 2,
split(l1, ceiling(seq_along(l1) / 3)),
split(l2, ceiling(seq_along(l2) / 3))
)
例如,下面的输出显示了mat
列表中的元素之一:
$`1`
[,1] [,2] [,3]
[1,] 4.0 4.5 5.0
[2,] 4.5 5.0 5.5
[3,] 5.0 5.5 6.0
我想将矩阵中的值除以另一个具有不同值的矩阵也许一个看起来像这样的矩阵(我不确定如何在 r 中创建一个矩阵)
2 1 2
3 2 3
1 2 3
我想要的输出将如下所示:
[,1] [,2] [,3]
[1,] 4.0/2 4.5/1 5.0/2
[2,] 4.5/3 5.0/2 5.5/3
[3,] 5.0/1 5.5/2 6.0/3
我怎么能创建这个输出?如何创建一个包含我想要的值的矩阵R
?
谢谢你。
解决方案
如果您的矩阵是相同的维度,您可以使用/
运算符将它们划分。
# create matrix to divide by
mat_div <- matrix(c(2,3,1,1,2,2,2,3,3), nrow = 3)
# divide list of matricies
lapply(mat, `/`, mat_div)
#------
$`1`
[,1] [,2] [,3]
[1,] 2.0 4.50 2.500000
[2,] 1.5 2.50 1.833333
[3,] 5.0 2.75 2.000000
$`2`
[,1] [,2] [,3]
[1,] 3.5 7.50 4.000000
[2,] 2.5 4.00 2.833333
[3,] 8.0 4.25 3.000000
推荐阅读
- c# - 如何在 UWP 中使用后台任务处理包卸载?
- quarkus-qute - Qute 动态创建的模板无法理解对象数据
- list - 测试 L 是否是一个有效的 Prolog 列表
- events - 如何将事件绑定到 ContentView 的 IsVisible 属性?
- r - 仅在特定列中使用非 NA 创建新列 [R]
- java - 引起:java.lang.IllegalArgumentException: Invalid column * with api >=29
- vba - 如何使用使用输入框从用户那里获取的输入在 VBA 中替换它
- c++ - 为什么我的类变量没有正确初始化?
- r - 合并列并创建另一个列以指定源
- mysql - 在 MySQL 中计算列的简单中位数