使用来自另一个列表的名称和值在 R 中创建列表

Create list in R with the names and values coming from another list

所以问题的表述非常糟糕,但我想要实现的是:我有以下列表:

list(a = data.frame(foo=1:10, bar=11:20), b = data.frame(foo=1:10, bar=11:20))

我现在要创建的是另一个列表,内容如下:

(list(a=c("foo", "bar"), b=c("foo", "bar")))
$a
[1] "foo" "bar"

$b
[1] "foo" "bar"

但显然我不想对其进行硬编码。我想有一些或多或少简单的答案,但我现在想不出任何答案。命名列表和为对象分配名称仍然让我在 R 中很困惑。所以任何帮助都会非常感激:)

假设您的原始列表是“l”,您可以这样做:

lapply(l, names)
# $a
# [1] "foo" "bar"
# 
# $b
# [1] "foo" "bar"

来自 ?names,您得到描述:“获取或设置对象名称的函数。”

原始列表中 data.frame 的名称将由此提取,并且 lapply 保留原始列表的名称。

选项tidyverse

library(purrr)
map(l, names)

-输出

#$a
#[1] "foo" "bar"

#$b
#[1] "foo" "bar"