作者locka (locka)
看板R_Language
標題[問題] list dataframe的處理
時間Mon Feb 13 16:13:29 2017
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
版上前輩午安,
我有一個list,每個element都是不同實驗方案得到的結果(存成data frame)
[[1]]
n count avg
1 1 16 9.17
2 2 77 10.21
3 3 159 9.12
...
[[2]]
n count avg
1 1 16 8.85
2 2 93 9.07
...
[[3]]
n count avg
...
為了要比較每種方案的avg 並用ggplot2做圖
我想要把這個list 合併成一個像下面這樣的data frame
n count avg approach
1 16 9.17 A
2 77 10.21 A
3 159 9.12 A
...
1 16 8.85 B
2 93 9.07 B
...
所以基本上我想做的事情是把5個data frame合起來並新增一個欄位來辨別不同的方案
不過我對用apply function操作list還不是很熟悉
請教各位前輩了!
範例資料貼在這邊
http://ideone.com/5QfenH
[關鍵字]:
data frame, list, apply funtion
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.110.191
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1486973612.A.A9D.html
※ 編輯: locka (140.112.110.191), 02/13/2017 16:14:47
推 cywhale: data.table::rbindlist(YourList,idcol=T) 02/13 17:27
感謝cywhale大大, 我是自己後來也有試出以下的寫法:
lapply(1:length(mylist),function(x){mylist[[x]] %>% mutate(approach=x)}) %>%
do.call("rbind",.)
沒想到data.table竟然有rbindlist這個函式可以用,也太方便了吧...wow
多學到一招了,非常感謝!!
※ 編輯: locka (140.112.110.191), 02/13/2017 18:00:28
推 cywhale: rbindlist速度很快~ 若資料量大會有幫助~~^^ 02/13 19:51
推 f496328mm: do.call很不錯 處理list資料 02/13 19:51
→ f496328mm: 第一次看到 rbindlist 改天試試看 02/13 19:52
→ clansoda: rbindlist有時候會怪怪的,不讓你pass 這時候rbind.fill 02/13 20:38
→ clansoda: 以後再setDT可以得到一樣的效果 02/13 20:38