r - data.frame 行以列出命名元素

标签 r

我有一个 2 列混合类型、向量和数据框的列表。

> my.list
$a
[1] 1

$df1
  key value
1   b     2
2   c     3

$df2
  key value
1   d     4
2   e     5

我只想得到一个向量列表,每个数据框行都将成为一个列表元素,其中列值为值,列键为元素名称。

所以这个例子中的结果是:

$a
[1] 1

$b
[1] 2

$c
[1] 3

$d
[1] 4

$e
[1] 5

实际上我是这样实现的:

my.list <- list(a = 1, 
                df1 = data.frame(key = c("b", "c"), value = 2:3), 
                df2 = data.frame(key = c("d", "e"), value = 4:5))

unlist(lapply(seq_along(my.list), function(i) {
  if (is.data.frame(my.list[[i]])) {
    with(my.list[[i]], as.list(setNames(value, key), all.names = TRUE))
  } else {
    setNames(my.list[i], names(my.list[i]))
  }
}), recursive = FALSE)

但我不太喜欢这个解决方案。请问您有更聪明的想法来实现这一目标吗?谢谢

最佳答案

你可以分两步完成 base R:

x = do.call(rbind, Filter(is.data.frame, my.list))

c(Filter(Negate(is.data.frame), my.list), as.list(setNames(x$value, x$key)))

$a
[1] 1

$b
[1] 2

$c
[1] 3

$d
[1] 4

$e
[1] 5

关于r - data.frame 行以列出命名元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39720867/

相关文章:

r - 如何将抖动添加到 ggpairs 中的散点图矩阵?

r - R 中的动物园 na.approx

r - 更改 ggplot 堆积面积图中的堆积顺序

r - 如何使X轴上的字体大小变量变小

r - dmvnorm 的奇怪行为

r - 将某些列的名称作为数据框每一行的一个单元格

r - 评估 ROC 指标、插入符号包 - R

r - HTTP状态为 '404 Not Found'时如何安装软件包

r - 保存在 R 中的 CSV 顺序

r - ggplot中的条形图