我有一个矩阵,其中包含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]
}
答案 0 :(得分:2)
我认为您正在寻找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中的函数。
答案 1 :(得分:1)
以下是使用apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: basic-ingress
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: nodejs
servicePort: 8000
软件包的示例:
想象一下我们有这个初始表:
purrr
这是列表:
library(purrr)
table_IJ <- matrix( round(10 *runif(20)), nrow = 5,ncol = 3)
> table_IJ
[,1] [,2] [,3]
[1,] 4 7 3
[2,] 5 2 7
[3,] 7 2 2
[4,] 7 4 9
[5,] 3 7 9
更新每列的最后操作如下:
lst <- list(1,2,3)
> lst
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
这基本上将相应的列表元素添加到表的相应列中!
updated_table_IJ <- map2_df(as.data.frame(table_IJ), lst, function(x,y) x + y)
答案 2 :(得分:1)
还有另外两种使用@Cole数据的方法。
根据列lst
复制mat
的值
mat + unlist(lst)[col(mat)]
# [,1] [,2] [,3]
#[1,] 2.6 2.5 2.9
#[2,] 3.1 3.2 3.3
#[3,] 3.9 3.8 3.7
或者我们可以使用双重转置方法
t(t(mat) + unlist(lst))