如何在r中进行列表和矩阵之间的计算
我有一个列表和矩阵,如下所示: 清单Y:如何在r中进行列表和矩阵之间的计算,r,R,我有一个列表和矩阵,如下所示: 清单Y: $`1` V1 V2 1 1 1 2 1 2 3 2 1 4 2 2 $`2` V1 V2 5 5 5 6 11 2 $`3` V1 V2 7 10 1 8 10 2 9 11 1 10 5 6 矩阵Z: [,1][,2][,3][,4][,5][,6] [1,] 2 1 5 5 10 1 我在矩阵Z
$`1`
V1 V2
1 1 1
2 1 2
3 2 1
4 2 2
$`2`
V1 V2
5 5 5
6 11 2
$`3`
V1 V2
7 10 1
8 10 2
9 11 1
10 5 6
矩阵Z:
[,1][,2][,3][,4][,5][,6]
[1,] 2 1 5 5 10 1
我在矩阵Z中分别考虑了点1、点2和点3。 点1-(2,1)
点2-(5,5) 点3-(10,1) 我想计算列表Y[[1]]中的所有点与点S1、列表Y[[2]]中的所有点与点S2、列表Y[[3]]中的所有点与r中的点3之间的距离之和。我该怎么做 rowsums(|y-z|^2)
尝试以下方法。它使用
Map
将函数应用于传递给Map
的两个列表的每个向量。请注意,我们不能简单地这样做
Map('-', Y, Z2)
因为R
将按列执行减法,而不是逐行执行
f <- function(x, y){
for(i in seq_len(nrow(x)))
x[i, ] <- x[i, ] - y
x
}
Z2 <- split(Z, rep(1:3, each = 2))
Map(f, Y, Z2)
f根据描述
Map(function(y, z) rowSums(abs(y - z[col(y)])^2),
Y, split(Z, as.numeric(gl(ncol(Z), 2, ncol(Z)))))
此解决方案提供了正确的期望输出,非常感谢。在完成上述计算之后,我如何才能得到所有答案的总和[[1][[2][[3]]?@DataMiningStudent如果lst
是输出对象,那么sum(unlist(lst))
你好,我有一个问题。在我上面的问题中,列表Y被认为是一个列表,即列表Y[[1]],但是如果列表Y有10个列表-[[1]]到[[10]],矩阵Z有多行,该怎么做?@DataMiningStudent它像列表的列表
?你能发布一个新问题吗?嗨,我发布了一个新问题
Map('-', Y, Z2)
f <- function(x, y){
for(i in seq_len(nrow(x)))
x[i, ] <- x[i, ] - y
x
}
Z2 <- split(Z, rep(1:3, each = 2))
Map(f, Y, Z2)
Map(function(y, z) rowSums(abs(y - z[col(y)])^2),
Y, split(Z, as.numeric(gl(ncol(Z), 2, ncol(Z)))))