2014-09-27 31 views
0

我有一個biglist包含0個子列表,其中每個是List of 1我該如何執行R列表中的子列表的quantile()?

當我做>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 0.500 NA NA 0.500

所以 上。我試圖找到子列表中所有整數值的第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))

+0

您好,歡迎SO。爲了提供一個可重現的例子,你可以使用'reproduce()'。說明在這裏:http://bit.ly/SORepro - [如何使一個偉大的R可重現的例子](http://bit.ly/SORepro) – 2014-09-27 18:33:38

回答

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 
+0

@RichardScriven,添加 – 2014-09-28 02:18:40