r - 将列表元素添加到矩阵各列中的每一行
问题描述
我有一个包含 i 行和 j 列的矩阵。
class(matrix)
#[1] "Incomplete"
attr(,"package")
#[1] "softImpute"
我还有一个包含 j 元素的值列表。
我想将每个 j 元素添加到矩阵中相应的 j 列。
矩阵:(1,1) = 1.6,(1,2) = 1.5 和 (2,1) = 2.1。
例如,如果我的列表 = [1,2,3],则矩阵更新为:
(1,1) = 1.6+1=2.6
(1,2) = 1.5+2=3.5
(2,1) = 1.1+1 = 2.1
我试过这个但不起作用:
for (i in length(list)) {
matrix_updated[,i] <- matrix[,i] + list[i]
}
解决方案
我想你正在寻找sweep()
mat <- matrix(c(1.6, 1.1, 0.9, 1.5, 1.2, 0.8, 1.9, 1.3, 0.7), 3, 3)
lst <- list(1,2,3)
sweep(mat, MARGIN = 2, STATS = unlist(lst), FUN = '+')
[,1] [,2] [,3]
[1,] 2.6 3.5 4.9
[2,] 2.1 3.2 4.3
[3,] 1.9 2.8 3.7
并且要修复您的原始功能,您需要使用[[
从列表中提取第一个元素:
matrix_updated <- mat
for (i in seq_len(length(lst))) {
matrix_updated[,i] <- mat[,i] + lst[[i]]
}
matrix_updated
另外,请不要命名您的变量matrix
和list
. 它们也是r中的函数。
推荐阅读
- javascript - javascript中带有字符串的嵌套数组形成
- sublimetext3 - 突出显示匹配“引号”和“双引号”
- sql - 根据其他几列的条件计算不同的一列
- robotframework - 在robotframework中并行执行KW
- python - 在python中打印异常的正确方法是什么?
- go - 无法使用流发送块
- vue.js - 如何手动比较两条路线
- python - pandas 中的加权平均值 - 字符串索引必须是整数
- rest - 如何在 POST Query 中使用 REST API 获取作者字段值
- jmeter - JMeter将响应保存到具有自定义扩展名的文件