【问题标题】:Average results of lapply function in RR中lapply函数的平均结果
【发布时间】:2021-09-11 16:28:51
【问题描述】:

我有一个这样的函数返回数据框:

TERM  Freq

GO1    1
GO2    5
GO3    4

我使用 lapply 多次调用该函数,并且我想通过 TERM 列平均接收到的所有结果(频率列)。请注意,每次运行可能会返回略有不同的术语。

lapply 函数的结果如下:

谢谢!

【问题讨论】:

  • 那么你的问题是什么?
  • 此外,这个问题真的会受益于可重复性(并且数据摘要的图片没有帮助)。请阅读stackoverflow.com/q/5963269minimal reproducible examplestackoverflow.com/tags/r/info,然后阅读edit 您的问题并使用dput(x) 添加样本数据,其中x 是一个代表性样本。如果您的函数不重要,请提供该 lapply(., yourfunc) 调用的结果示例,以便我们更好地查看您想要聚合的内容。谢谢!

标签: r lapply mean sapply


【解决方案1】:

这是一个 dplyr 解决方案。

样本数据:

dat1 <- read.table(header = TRUE, text = '
TERM  Freq
GO1    1
GO2    5
GO3    4')


dat2 <- read.table(header = TRUE, text = '
TERM  Freq
GO1    1
GO2    2
GO3    1')



dat3 <- read.table(header = TRUE, text = '
TERM  Freq
GO1    2
GO2    3
GO3    4')


lst <- list(dat1, dat2, dat3)

解决分两步。首先将列表组合成一个数据框。然后进行分组和汇总。像这样:

library(dplyr)


grp <- bind_rows(lst) %>% 
  group_by(TERM) %>% 
  summarize(mean = mean(Freq))

grp
# # A tibble: 3 x 2
#   TERM   mean
#   <chr> <dbl>
# 1 GO1    1.33
# 2 GO2    3.33
# 3 GO3    3 


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2021-04-03
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    相关资源
    最近更新 更多