gpt4 book ai didi

r - 如何使用 lapply() 获取列表中每个元素的名称?

转载 作者:行者123 更新时间:2023-12-03 07:42:29 25 4
gpt4 key购买 nike

假设我有以下列表

> test <- list("a" = 1, "b" = 2)

列表中的每个元素都有一个名称:

> names(test)

现在,我想使用 lapply() 提取该名称,因为我想在将使用 lapply 调用的新函数中使用它。我只是不知道如何提取每个元素的名称。

我尝试过使用 deparse()substitute() 但结果很奇怪:

> lapply(test, function(x) {deparse(substitute(x))})
$a
[1] "X[[i]]"

$b
[1] "X[[i]]"

有人知道吗?

精度:

我想做这样的事情:我有一个类似于测试的列表:

> test <- list("a" = matrix(1, ncol = 3), "b" = matrix(2, ncol = 3))

我想向该列表应用一个函数,该函数转换每个元素内的数据并为每个列指定特定名称:

make_df <- function(x) {
output <- data.frame(x)
names(output) <- c("items", "type", NAME_OF_X)
return(output)
}
lapply(test, make_df)

预期输出是:

> test
$a
[,1] [,2] [,3]
[1,] 1 1 1
attr(,"names")
[1] "index" "type" "a"

$b
[,1] [,2] [,3]
[1,] 2 2 2
attr(,"names")
[1] "index" "type" "b"

我不知道如何获取元素的名称来为我的第三列命名。

最佳答案

这是使用purrr的解决方案。它似乎比 aaronwolden 的解决方案运行得更快,但比 akrun 的解决方案运行得更慢(如果这很重要的话):

library(purrr)
map2(test, names(test), function(vec, name) {
names(vec) <- c("index", "type", name)
return(vec)
})

$a
[,1] [,2] [,3]
[1,] 1 1 1
attr(,"names")
[1] "index" "type" "a"

$b
[,1] [,2] [,3]
[1,] 2 2 2
attr(,"names")
[1] "index" "type" "b"

关于r - 如何使用 lapply() 获取列表中每个元素的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31026276/

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