我有一个列表,我想将其转换为带有两列的data.frame.问题是列表元素的长度不相等,这是我的数据的外观示例:
my.list
$A1CF
[1] "A1CF" "APOBEC1" "CUGBP2" "KHSRP" "SYNCRIP" "TNPO2"
$A2LD1
[1] "A2LD1" "PRPSAP2" "RPL15" "TANC1"
$A2M
[1] "A2M" "ADAM19" "ADAMTS1" "AMBP" "ANXA6" "APOE"
Run Code Online (Sandbox Code Playgroud)
此列表来自以前的data.frame:
my.list <- split(df$V2, df$V1)
df
V1 V2
1 A1BG A1BG
2 A1BG CRISP3
3 A1CF A1CF
4 A1CF APOBEC1
5 A1CF CUGBP2
6 A1CF KHSRP
7 A1CF SYNCRIP
8 A1CF TNPO2
9 A2LD1 A2LD1
10 A2LD1 PRPSAP2
11 A2LD1 RPL15
12 A2LD1 TANC1
13 A2M A2M
14 A2M ADAM19
15 A2M ADAMTS1
16 A2M AMBP
17 A2M ANXA6
18 A2M APOE
Run Code Online (Sandbox Code Playgroud)
其中删除了与AB1G相对应的元素.我想恢复分割效果以获得相同的结构:
new.df
A1CF A1CF
A1CF APOBEC1
A1CF CUGBP2
A1CF KHSRP
A1CF SYNCRIP
A1CF TNPO2
A2LD1 A2LD1
A2LD1 PRPSAP2
A2LD1 RPL15
A2LD1 TANC1
A2M A2M
A2M ADAM19
A2M ADAMTS1
A2M AMBP
A2M ANXA6
A2M APOE
Run Code Online (Sandbox Code Playgroud)
我尝试过:df.new <- do.call(rbind, my.list)但显然它没有用.
非常感谢
使用这些虚拟数据,
ll <- list(a = letters[3:6],
b = LETTERS[1:10],
c = letters[1:2])
stack(ll)
Run Code Online (Sandbox Code Playgroud)
要么
reshape2::melt(ll, id=1)
Run Code Online (Sandbox Code Playgroud)
要么
plyr::ldply(ll, cbind)
Run Code Online (Sandbox Code Playgroud)
应该给你大致正确的格式
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |