【问题标题】:How to calculate mean points for elements in a List in R如何计算R中列表中元素的平均点
【发布时间】:2018-01-14 22:37:09
【问题描述】:

我有矩阵 A 和列表 B,如下所示:

矩阵 A:

     [,1][,2]
[1,]   1   1   
[2,]   1   2   
[3,]   2   1   
[4,]   2   2   
[5,]   10  1   
[6,]   10  2   
[7,]   11  1   
[8,]   11  2   
[9,]   5   5   
[10,]  5   6  

下面的ListB是基于矩阵A的行顺序中的最小距离进行的分组。例如,List[[1]]中的前四个点是矩阵A的前四个点,即( 1,1) (1,2) (2,1) (2,2) 属于第 1 组,以此类推

列表 B:

    [[1]]
    [1] 1 1 1 1 3 2 3 2 1 1

    [[2]]
    [1] 3 3 3 3 3 3 1 2 3 3

    [[3]]
    [1] 1 1 2 2 3 3 3 3 2 2

如何根据分组分别计算第 1 组、第 2 组和第 3 组的点的平均值?

如果只有一个向量,我就是这样做的:

    meanPoints <- apply(MatrixA, 2, tapply, ListB, mean)            

但是如何做一个循环来获得 R 中列表 [[1]] [[2]] [[3]] 的平均点?

【问题讨论】:

    标签: r


    【解决方案1】:

    我认为您可以使用 lapply() 构建一个匿名函数来处理通过多个分组向量的迭代。

    # similar data bc I didn't want to type that
    MatrixA <- matrix(data = 1:20, ncol = 2)
    B <- c(rep(1:3, length.out = 10))
    C <- c(rep(3:1, length.out = 10))
    listB <- list(B, C)
    
    # just wrapping your single vector solution
    lapply(lists, function(x) {apply(MatrixA, 2, tapply, x, mean)})
    
    [[1]]
      [,1] [,2]
    1  5.5 15.5
    2  5.0 15.0
    3  6.0 16.0
    
    [[2]]
      [,1] [,2]
    1  6.0 16.0
    2  5.0 15.0
    3  5.5 15.5
    

    这就是你要找的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 2021-12-03
      • 2018-03-19
      • 2013-07-22
      • 2018-06-21
      • 1970-01-01
      • 2013-01-04
      相关资源
      最近更新 更多