如何在R中的列表中执行子列表的quantile()?

时间:2014-09-27 18:16:41

标签: r list indexing sublist quantile

我有一个biglist,其中包含0个子列表,每个子列表都是List of 1

当我>biglist时,我得到了这个:

            [,1]       [,2]       [,3]       [,4]       [,5]       [,6]       [,7]       [,8]   
LIST1       Numeric,6  Numeric,6  Numeric,6  Numeric,6  Numeric,6  Numeric,6  Numeric,6  Numeric,6  

每个子列表包含整数值和NA值。即。

>biglist[1]收益

  

NA 0.50 NA NA 0.25 1.00 NA 0.00`

>biglist[2]收益

  

0.500 0.375 0.000 0.500 NA 0.500 0.500 NA

等等。我试图找到子列表的所有整数值的第50百分位数和第95百分位数,但我想摆脱NA值。我该如何做到这一点?

编辑:可重复的例子 biglist <- list(c(NA, 0.5, NA, NA, 0.25, 1, NA, 0), c(0.5, NA, NA, NA, NA,NA, NA, NA), c(0.5, 0.375, 0, 0.5, NA, 0.5, 0.5, NA), c(NA, NA,NA, NA, NA, 0.5, 0.5, 0.333333333333333), c(NA, NA, 0.125, NA,0.5, 1, 0.5, 0.5), c(0.5, 0.25, 0.5, NA, NA, NA, NA, 0.5), c(0.625,NA, NA, 0.5, NA, NA, NA, NA), c(0.25, NA, 0.5, NA, NA, NA, NA,0.333333333333333), c(0.25, 0.75, NA, 0.5, 0.5, NA, 0, NA), c(NA,NA, 0.375, NA, 0.5, 0.5, 1, NA))

1 个答案:

答案 0 :(得分:1)

使用lapplysapply如下

sapply(biglist, quantile, prob=c(.50, .95), na.rm=TRUE )
#      [,1] [,2] [,3] [,4] [,5] [,6]    [,7]     [,8] [,9] [,10]
# 50% 0.375  0.5  0.5  0.5  0.5  0.5 0.56250 0.333333  0.5 0.500
# 95% 0.925  0.5  0.5  0.5  0.9  0.5 0.61875 0.483333  0.7 0.925

sapply(biglist, quantile, prob=c(.50, .95), na.rm=TRUE, simplify=FALSE )
# [[1]]
#   50%   95% 
# 0.375 0.925 

# [[2]]
# 50% 95% 
# 0.5 0.5 

# [[3]]
# 50% 95% 
# 0.5 0.5 

# [[4]]
# 50% 95% 
# 0.5 0.5 

# [[5]]
# 50% 95% 
# 0.5 0.9 

# [[6]]
# 50% 95% 
# 0.5 0.5 

# [[7]]
#     50%     95% 
# 0.56250 0.61875 

# [[8]]
#      50%      95% 
# 0.333333 0.483333 

# [[9]]
# 50% 95% 
# 0.5 0.7 

# [[10]]
#   50%   95% 
# 0.500 0.925