我有以下列表:
my_lol <- structure(list(coolfactor_score = list(structure(c(0.164477631065473,
0.198253819406019, 0.396414447052519, 0.133118603987442, 0.107735498488546
), .Names = c("B", "Mac", "NK", "Neu", "Stro")), structure(c(0.186215537135912,
0.18408529174803, 0.375349920115798, 0.247664923324821, 0.006684327675438
), .Names = c("B", "Mac", "NK", "Neu", "Stro"))), sr_crt = list(
structure(list(crt = 0.133118603987442, sr = 0.407076876403305), .Names = c("crt",
"sr")), structure(list(crt = 0.18408529174803, sr = 0.0829181742326453), .Names = c("crt",
"sr"))), sample_names = c("Sample1", "Sample2")), .Names = c("coolfactor_score",
"sr_crt", "sample_names"))
看起来像这样:
> my_lol
$coolfactor_score
$coolfactor_score[[1]]
B Mac NK Neu Stro
0.1644776 0.1982538 0.3964144 0.1331186 0.1077355
$coolfactor_score[[2]]
B Mac NK Neu Stro
0.186215537 0.184085292 0.375349920 0.247664923 0.006684328
$sr_crt
$sr_crt[[1]]
$sr_crt[[1]]$crt
[1] 0.1331186
$sr_crt[[1]]$sr
[1] 0.4070769
$sr_crt[[2]]
$sr_crt[[2]]$crt
[1] 0.1840853
$sr_crt[[2]]$sr
[1] 0.08291817
$sample_names
[1] "Sample1" "Sample2"
# Note that the number of samples can be more than 2 and cell type more than 5.
我怎样才能将它整理到这个数据框(tibbles)
CellType Sample CoolFactorScore SR CRT
B Sample1 0.1644776 0.4070769 0.1331186
Mac Sample1 0.1982538 0.4070769 0.1331186
NK Sample1 0.3964144 0.4070769 0.1331186
Neu Sample1 0.1331186 0.4070769 0.1331186
Stro Sample1 0.1077355 0.4070769 0.1331186
B Sample2 0.186215537 0.08291817 0.1840853
Mac Sample2 0.184085292 0.08291817 0.1840853
NK Sample2 0.375349920 0.08291817 0.1840853
Neu Sample2 0.247664923 0.08291817 0.1840853
Stro Sample2 0.006684328 0.08291817 0.1840853
最佳答案
使用基本 R 的一种方法:
mylist <- lapply(1:2, function(i) {
#this is the important bit where you extract the corresponding elements
#of sample 1 first and sample 2 second.
df <- data.frame(lapply(my_lol, '[', i))
names(df) <- c('CoolFactorScore', 'CRT', 'SR', 'Sample')
df$CellType <- rownames(df)
row.names(df) <- NULL
df
})
do.call(rbind, mylist)
输出:
CoolFactorScore CRT SR Sample CellType
1 0.164477631 0.1331186 0.40707688 Sample1 B
2 0.198253819 0.1331186 0.40707688 Sample1 Mac
3 0.396414447 0.1331186 0.40707688 Sample1 NK
4 0.133118604 0.1331186 0.40707688 Sample1 Neu
5 0.107735498 0.1331186 0.40707688 Sample1 Stro
6 0.186215537 0.1840853 0.08291817 Sample2 B
7 0.184085292 0.1840853 0.08291817 Sample2 Mac
8 0.375349920 0.1840853 0.08291817 Sample2 NK
9 0.247664923 0.1840853 0.08291817 Sample2 Neu
10 0.006684328 0.1840853 0.08291817 Sample2 Stro
关于r - 如何在 R 中将列表列表转换为整齐的 tibble 或 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43756100/