2017-08-12 5 views
2

データフレームのすべての列をリストに動的にロードするにはどうすればよいですか?データフレームから列を動的にリストにロードする方法は?

は現在、これは私がそれを行う方法ですが、それは非常に面倒である:例えば

list(PM = PM, site = site, code = code) 

、私はこのdatafameを持っている:

structure(list(Particles = c(0.596667, 0.27, 0.153333, 0, 0.753333, 
    0, 0.35, 0.506667, 1.6, 0.116667), PM = c(35.5158928571429, 16.0714285714286, 
    9.12696428571429, 0, 44.84125, 0, 20.8333333333333, 30.15875, 
    95.2380952380953, 6.94446428571429), timestamp = c(1493310389147, 
    1493310419191, 1493310449254, 1493310479270, 1493310509313, 1493310539387, 
    1493310569416, 1493310599465, 1493310629525, 1502378711339), 
     date = structure(c(1493310389.147, 1493310419.191, 1493310449.254, 
     1493310479.27, 1493310509.313, 1493310539.387, 1493310569.416, 
     1493310599.465, 1493310629.525, 1502378711.339), class = c("POSIXct", 
     "POSIXt"), tzone = "UTC-1"), site = c("ABC", "ABC", 
     "ABC", "ABC", "ABC", "ABC", 
     "ABC", "ABC", "ABC", "ABC" 
     ), code = c("ABC", "ABC", "ABC", 
     "ABC", "ABC", "ABC", "ABC", 
     "ABC", "ABC", "ABC"), key_date = c("2017-04-27", 
     "2017-04-27", "2017-04-27", "2017-04-27", "2017-04-27", "2017-04-27", 
     "2017-04-27", "2017-04-27", "2017-04-27", "2017-08-10")), .Names = c("Particles", 
    "PM", "timestamp", "date", "site", "code", "key_date"), row.names = c(NA, 
    10L), class = "data.frame") 

任意のアイデア?

答えて

5

これを直接行うにはas.listまたはunclassを使用できます。どちらも名前付きリストを返します。 @akrunが示唆するように、あなたはサブセットでき

その後
as.list(dat) 

か、あなたはdata.frameは単に「data.frame」クラスを持つリストであるという事実を利用することができ、

unclass(dat) 

、 data.frameを前もってサブセット化することもできます。たとえば、変数myVarsは、保持する変数の名前を含む選択プロセスによって作成されたとします。

myVars <- c("PM","site","code") 

その後

unclass(dat[myVars]) 

または

unclass(dat)[myVars] 
3

我々が関心の列をサブセット化した後as.listで行うことができます

as.list(df[c("PM", "site", "code")]) 
関連する問題