[英]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.call
和rbind
創建矩陣。
outmatrix <- do.call(rbind, outlist)
outmatrix
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.