簡體   English   中英

遍歷R中的列表並存儲列表

[英]iterate over list in R and store list

我有一個矩陣/向量列表,想應用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 ...

謝謝

您可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM