【问题标题】:summary on list with all the info you need using map列表上的摘要,包含您使用地图所需的所有信息
【发布时间】:2017-06-29 09:41:36
【问题描述】:

我有一个包含 6 个元素的列表,需要一些汇总统计信息。每个元素都有不同数量的观察值,但都具有相同的 9 个变量。它们是使用拆分创建的,因此每个元素都是不同的处理方式。我想创建一个包含:n、min、max、mean、SD、5th quantile 和 95th quantile) 的表。

我正在为函数map() 使用purrr 包,它类似于lapply(),但更易于调试。

发件人:lapply(test,summary) 我可以得到最小值、最大值、平均值

n, 和 sd 我能够得到以下内容:

mdl_summary= map(test,col_summary, sd) %>%
    lapply(., setNames, nm=colnames  %>%
    map(.,t) %>%
    lapply(., function(x)  {
      row.names(x)=deparse(substitute(sd))
      return (x)
    })

col_summary 是另一个函数代码:

col_summary <- function(df, fun) {
  output <- vector("numeric", length(df))
  for (i in seq_along(df)) {
    output[[i]] <- fun(df[[i]])
  }
  output
}

但我无法得到分位数...

我也尝试将mdl_summary 概括为mdl_summary_fun,但无法获得行名来说明它运行的函数。

mdl_summary_fun= function (x,f)
  map(x,col_summary, f) %>%
  lapply(., setNames, nm=colnames(mdl$Statistics[2:10]))  %>%
  map(.,t) %>%
  lapply(., function(x)  {
    row.names(x)=deparse(substitute(f))
    return (x)
  })

【问题讨论】:

  • 元素列表?什么类型的元素?向量?矩阵?数据框?请为可重复的示例提供一些数据。在列表的一些元素上使用dput()。有了一些数据,这个问题在几个小时前就会得到回答!

标签: r


【解决方案1】:

我只需要修改我创建的 col_summary 函数以包含额外的参数:

col_summary <- function(df, fun, ...) {
  output <- vector("numeric", length(df))
  for (i in seq_along(df)) {
    output[[i]] <- fun(df[[i]], ...)
  }
  output
}

【讨论】:

    猜你喜欢
    • 2011-11-23
    • 1970-01-01
    • 2021-03-16
    • 2020-12-08
    • 1970-01-01
    • 2021-03-16
    • 2015-01-15
    • 1970-01-01
    • 2011-06-06
    相关资源
    最近更新 更多