【发布时间】: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 次迭代才执行一次?