【问题标题】:R: How to calculate rowMeans for dataframes in a list?R:如何计算列表中数据框的 rowMeans?
【发布时间】:2022-06-21 23:25:56
【问题描述】:

我有一个如下所示的列表 (my.list):

> my.list
$S1
  A B C D
1 5 2 3 2
2 6 3 4 3
3 7 5 5 5
4 2 3 6 7
5 6 6 7 6

$S2
  A B C D
1 5 2 3 2
2 6 3 4 3
3 7 5 5 5
4 2 3 6 7
5 6 6 7 6

我想通过 A-D 列的行均值来创建一个新变量“E”。

我已经尝试使用两个循环:

test_list<-list()

for(i in 1:5){
  test_data$E <- list.append(test_list, mylist[[i]] %>% rowMeans(mylist[,c("A","B","C","D")]))
}

和 lapply:


merged_data <- lapply(merged_data, transform, E = rowMeans(mylist[,c("A","B","C","D")]))

两者似乎都不起作用。我收到错误消息:

Error in mylist[c("A","B","C","D"),  : 
  incorrect number of dimensions

我该怎么做?

可重现的数据:

my.list <- structure(list(S1 = structure(list(A = c(5, 6, 7, 2, 6), B = c(2,3,5,3,6), C = c(3,4,5,6,7), D = c(2,3,5,7,6)),.Names = c("A", "B", "C", "D"), class = "data.frame", row.names = c("1","2", "3", "4", "5")), S2 = structure(list(A = c(5, 6, 7, 2, 6), B = c(2,3,5,3,6), C = c(3,4,5,6,7), D = c(2,3,5,7,6)), .Names = c("A", "B", "C", 
"D"), class = "data.frame", row.names = c("1", "2", "3", "4","5"))), .Names = c("S1", "S2"))

【问题讨论】:

    标签: r list rstudio lapply mean


    【解决方案1】:

    使用lapply:

    lapply(my.list, \(x)transform(x, E = rowMeans(x)))
    

    甚至

    lapply(my.list, \(x)cbind(x, E = rowMeans(x)))
    

    两个结果:

    $S1
      A B C D    E
    1 5 2 3 2 3.00
    2 6 3 4 3 4.00
    3 7 5 5 5 5.50
    4 2 3 6 7 4.50
    5 6 6 7 6 6.25
    
    $S2
      A B C D    E
    1 5 2 3 2 3.00
    2 6 3 4 3 4.00
    3 7 5 5 5 5.50
    4 2 3 6 7 4.50
    5 6 6 7 6 6.25
    

    【讨论】:

      【解决方案2】:

      附加选项

      library(tidyverse)
      map(my.list, ~mutate(.x, E = rowMeans(.x)))
      
      $S1
        A B C D    E
      1 5 2 3 2 3.00
      2 6 3 4 3 4.00
      3 7 5 5 5 5.50
      4 2 3 6 7 4.50
      5 6 6 7 6 6.25
      
      $S2
        A B C D    E
      1 5 2 3 2 3.00
      2 6 3 4 3 4.00
      3 7 5 5 5 5.50
      4 2 3 6 7 4.50
      5 6 6 7 6 6.25
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-03
        • 2019-10-18
        • 1970-01-01
        • 2021-03-29
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 2021-05-02
        相关资源
        最近更新 更多