簡體   English   中英

R中的子集列表

[英]subsetting list in R

我在R使用Mcomp包,其中包含用於預測的數據集。

數據按年、季度和月頻率組織。 我可以輕松地將其子集到列表中,但不能使用附加條件進一步子集。

##Subset monthly data
library("Mcomp")
mon <- subset(M3,"monthly")

mon列表中的每個元素都具有以下結構,例如mon$N1500具有以下結構

$ N1500:List of 9
  ..$ st         : chr "M99"
  ..$ type       : chr "MICRO"
  ..$ period     : chr "MONTHLY"
  ..$ description: chr "SHIPMENTS (Code TD-30USA)"
  ..$ sn         : chr "N1500"
  ..$ x          : Time-Series [1:51] from 1990 to 1994: 3700 2460 3320 2480 3200 2980 3880 3320 3420 3780 ...
  ..$ xx         : Time-Series [1:18] from 1994 to 1996: 2400 2720 2840 2220 2320 2860 2980 2840 3000 3520 ...
  ..$ h          : num 18
  ..$ n          : int 51

我的問題是如何將 mon 子集化以獲取所有元素的$x並將其存儲在具有相同列表名稱的列表中

例如,請參見下面的一個元素,我想為mon列表中的所有元素保存它?

> mon$N1500$x
      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
1990 3700 2460 3320 2480 3200 2980 3880 3320 3420 3780 4080 3160
1991 3440 3760 3020 2740 3800 3340 3920 2700 2460 2880 3120 3980
1992 3300 2740 3200 2540 3200 2780 2600 3020 2280 2720 2680 3060
1993 3040 2440 3380 2500 2540 3060 2560 2860 3320 2920 2560 3560
1994 3760 3140 2700 

非常感謝

你的意思是這樣的?

x <- lapply(mon, `[[`, 'x')
str(x)
# List of 1428
#  $ N1402: Time-Series [1:50] from 1990 to 1994: 2640 2640 2160 4200 3360 2400 3600 1920 4200 4560 ...
#  $ N1403: Time-Series [1:50] from 1990 to 1994: 1680 1920 120 1080 840 1440 480 720 4080 1560 ...
#  $ N1404: Time-Series [1:50] from 1990 to 1994: 1140 720 4860 1200 3150 2130 1800 2010 2880 1650 ...
#  $ N1405: Time-Series [1:50] from 1990 to 1994: 180 940 2040 800 1000 520 500 400 1760 1520 ...
#  $ N1406: Time-Series [1:50] from 1990 to 1994: 2000 1550 4450 3050 3050 2250 2200 2450 4900 5300 ...
# ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM