如何在r

时间:2018-01-07 15:04:44

标签: 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

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)

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)))))