gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:30:20 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com