列表摘要,包含您使用地图所需的所有信息

时间:2017-02-10 22:21:52

标签: r

我有一个包含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,但无法让rowname说出它运行的功能。

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

1 个答案:

答案 0 :(得分:0)

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

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