我有一个列表和一个矩阵,如下所示:
列出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
Matrix Z:
[,1][,2][,3][,4][,5][,6]
[1,] 2 1 5 5 10 1
我在下面将其视为Matrix Z中的points1,points2和points3
points1 - (2,1)
[,1][,2]
[1,] 2 1
points2 - (5,5)
[,3][,4]
[1,] 5 5
points3 - (10,1)
[,5][,5]
[1,] 10 1
我想计算列表Y [[1]]和points1中所有点之间的距离之和,列表Y [[2]]和点2中的所有点以及列表Y [[3]]中的所有点和点3中r。我怎么能这样做?
rowsums(|y-z|^2)
答案 0 :(得分:1)
尝试以下方法。它使用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)
答案 1 :(得分:1)
根据说明,
Map(function(y, z) rowSums(abs(y - z[col(y)])^2),
Y, split(Z, as.numeric(gl(ncol(Z), 2, ncol(Z)))))