【问题标题】:iterate over list in R and store list遍历 R 中的列表并存储列表
【发布时间】:2014-12-11 20:26:18
【问题描述】:

我有一个矩阵/向量列表,并希望应用 R 函数并将输出存储为一系列数字中的列表。例如:我有一个向量 x 并且想计算最小值、最大值、中位数、分位数并将其存储在每次迭代的列表中,

outlist <- vector("list", 10)

for(p in seq(from=5, to=50, by=5))  {

  x <- c(rnorm(20)) 

  min <- min(x)
  max <- max(x)
  median <- median(x)
  quant <- quantile(x)

  outlist[[p]] <- list(c(min=min,max=max,median=median,quant=quant))

  print(p)
  }

上面的代码工作正常,除了输出和有很多“空”值。有关上述程序的输出,请参见下文,请注意 1 到 4 为空,并且仅在第 5 次迭代中我们开始获取列表输出。这对所有迭代重复。你能告诉我我应该如何避免在输出中出现空值。

以下是我的问题。如何确保不存在所有空值,只存在迭代中的序列号(p=5,10,15,...,50)。

[[1]]
NULL

[[2]]
NULL

[[3]]
NULL

[[4]]
NULL

[[5]]
[[5]][[1]]
       min        max     median   quant.0%  quant.25%  quant.50%  quant.75% quant.100% 
-2.1058435  2.8461767 -0.5227028 -2.1058435 -1.1500056 -0.5227028  0.1645680  2.8461767 

另外,如何为以行名作为序列示例的列表创建矩阵(向量)输出?

       min        max     median   quant.0%  quant.25%  quant.50%  quant.75% quant.100% 
5  -2.1058435  2.8461767 -0.5227028 -2.1058435 -1.1500056 -0.5227028  0.1645680  2.8461767 
10 -0.7709128  2.2872216  0.1808006 -0.7709128 -0.1501660  0.1808006  0.8250730  2.2872216 
15 -2.3748713  2.0360717  0.2638579 -2.3748713 -0.2631081  0.2638579  0.6446657  2.0360717

and so on ...

谢谢

【问题讨论】:

  • 好吧,如果您只分配索引为 5 的倍数的项目,您会期待什么。如果您想要“密集”值,请学习使用 seq_along 生成索引。 `
  • 您只是想删除空值? Filter(Negate(is.null), outlist) 或者您想要每次迭代的摘要统计信息?如果是后者,为什么你要让循环每 5 次迭代才执行一次?

标签: r list lapply


【解决方案1】:

您可以使用foreach 包构建列表。 foreach 函数将返回一个列表,然后您可以指定其名称。

library(foreach)

vectorNames <- seq(from=5, to=50, by=5)

outlist <- foreach(p = vectorNames) %do% {

  x <- c(rnorm(20)) 

  min <- min(x)
  max <- max(x)
  median <- median(x)
  quant <- quantile(x)

  return(c(min=min,max=max,median=median,quant=quant))
}

names(outlist) <- vectorNames

然后,您可以使用do.callrbind 创建矩阵。

outmatrix <- do.call(rbind, outlist)
outmatrix

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2016-09-19
    • 2014-09-26
    • 2018-11-20
    • 2017-07-16
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多