sapply(list(runif (10), runif (10)),
function(x) c(min = min(x), mean = mean(x), max = max(x)))
上面的代码为什么给出3行2列而不是2行3列的矩阵?
答案 0 :(得分:0)
编辑(以下为原始答案,并附有说明):
我们可以使用ldply
中的plyr
,因为它直接为我们提供了data.frame
对象。
plyr::ldply(list(runif(10),runif(10)),
function(x) c(Min=min(x),Mean=mean(x),Max=max(x)))
# Min Mean Max #No seed
# 1 0.03964594 0.3960042 0.7345305
# 2 0.05233872 0.3811633 0.9713190
原始
:该列表包含两个部分:
list(runif(10),runif(10))
从每个列表中,我们找到最小值,最大值和平均值,从而得出输出。 要了解原因,请尝试单独运行:
sapply(list(runif (10)), function(x) c(min = min(x), mean = mean(x), max = max(x)))
如果更改simplify
参数,则可以得到您希望(我认为)具有的输出:
sapply(list(runif (10)), function(x) c(min = min(x), mean = mean(x), max = max(x)),
simplify = F)
#[[1]]
# min mean max #No seed
# 0.2482040 0.4845170 0.8294896
注意:: ,您需要set.seed
才能重现。