在 R 中展平列表时维护名称
Maintaining names while flattening lists in R
下面是一些虚拟数据和代码。我想我正在尝试做与
完全相反的事情
在为 a statistical test, I'm left with a very ugly looking list. When I unpack this list 进行操作后,names 中存储的 variable/country 编码完全丢失。
我想要一个数据框,其中国家/地区作为行名称,类别作为列名称。
如有指点,将不胜感激!
set.seed(1)
CVtest <- list()
for (i in c("AT","BE","DE")) { #For all countries
# Test all categories together
CVtest[[i]][["EveryCat"]] <- sample(seq(0, 1, by=0.01), 1)
for (j in c("All", "Sub", "Key", "Sel")) { # Test each category
CVtest[[i]][[j]] <- sample(seq(0, 1, by=0.01), 1)
}
}
当前输出:
> class(CVtest)
[1] "list"
> CVtest
$`AT` EveryCat All Sub Key Sel
0.26 0.37 0.57 0.91 0.20
$BE EveryCat All Sub Key Sel
0.90 0.95 0.66 0.63 0.06
$DE EveryCat All Sub Key Sel
0.20 0.17 0.69 0.38 0.77
期望的输出
> class(CVtest)
[1] "data.frame"
> CVtest
EveryCat All Sub Key Sel
AT 0.26 0.37 0.57 0.91 0.20
BE 0.90 0.95 0.66 0.63 0.06
DE 0.20 0.17 0.69 0.38 0.77
你的问题还不是很清楚(看我最新的评论)。我只能猜你想要什么。你能试试吗:
x <- purrr::transpose(CVtest)
y <- rlist::list.stack(x)
rownames(y) <- names(x)
y
告诉我 y
是否是所需的输出。否则我会删除这个答案并请澄清你的问题。
下面是一些虚拟数据和代码。我想我正在尝试做与
在为 a statistical test, I'm left with a very ugly looking list. When I unpack this list
我想要一个数据框,其中国家/地区作为行名称,类别作为列名称。
如有指点,将不胜感激!
set.seed(1)
CVtest <- list()
for (i in c("AT","BE","DE")) { #For all countries
# Test all categories together
CVtest[[i]][["EveryCat"]] <- sample(seq(0, 1, by=0.01), 1)
for (j in c("All", "Sub", "Key", "Sel")) { # Test each category
CVtest[[i]][[j]] <- sample(seq(0, 1, by=0.01), 1)
}
}
当前输出:
> class(CVtest)
[1] "list"
> CVtest
$`AT` EveryCat All Sub Key Sel
0.26 0.37 0.57 0.91 0.20
$BE EveryCat All Sub Key Sel
0.90 0.95 0.66 0.63 0.06
$DE EveryCat All Sub Key Sel
0.20 0.17 0.69 0.38 0.77
期望的输出
> class(CVtest)
[1] "data.frame"
> CVtest
EveryCat All Sub Key Sel
AT 0.26 0.37 0.57 0.91 0.20
BE 0.90 0.95 0.66 0.63 0.06
DE 0.20 0.17 0.69 0.38 0.77
你的问题还不是很清楚(看我最新的评论)。我只能猜你想要什么。你能试试吗:
x <- purrr::transpose(CVtest)
y <- rlist::list.stack(x)
rownames(y) <- names(x)
y
告诉我 y
是否是所需的输出。否则我会删除这个答案并请澄清你的问题。