重命名列表的命名列表的某些部分,而无需for循环

格雷格

我有一个这样的清单清单

list1 <- list(a = 1, error = 2)
list2 <- list(a = 1, error = 3)
mylist <- list(list1, list2)

我想将当前命名的所有元素重命名"a"为中的名称new_names

new_names <- c("new_1", "new_2")

我可以for像这样循环

for(i in seq_along(mylist)) {
  names(mylist[[i]])[names(mylist[[i]]) == "a"] <-  new_names[i]}

并得到我想要的结果:

mylist
[[1]]
[[1]]$new_1
[1] 1

[[1]]$error
[1] 2


[[2]]
[[2]]$new_2
[1] 3

[[2]]$error
[1] 4

我想做到这一点而无需for循环。像该map函数之类的东西可能不起作用,因为它会替换所有名称,而不仅仅是替换那些"a"

library(purrr)
mylist_2 <- map(mylist, ~{names(.)[names(.) == "a"] <-  new_names})
马库斯

您可以使用MapbaseR

f <- function(x, y) {
  names(x)[names(x) == "a"] <- y
  x
}

Map(f, x = mylist, y = new_names)
#[[1]]
#[[1]]$new_1
#[1] 1
#
#[[1]]$error
#[1] 2
#
#
#[[2]]
#[[2]]$new_2
#[1] 1
#
#[[2]]$error
#[1] 3

使用purrr它将是map2

purrr::map2(mylist, new_names, f)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从向量制作命名列表而无需复制/粘贴

来自分类Dev

R:for循环或套用到命名列表的某些元素

来自分类Dev

如何重命名列表中的标签?

来自分类Dev

用magrittr重命名列表

来自分类Dev

列为命名列表

来自分类Dev

“状态”的命名列表

来自分类Dev

在变量后命名列表

来自分类Dev

重命名列表中每个对象的字段

来自分类Dev

如何动态重命名列表的附加项

来自分类Dev

使用lapply和gsub重命名列表中的列

来自分类Dev

重命名列表中每个数据帧的标题

来自分类Dev

R:使用序列号重命名列并保存列表

来自分类Dev

使用数据框通过键重命名列表元素

来自分类Dev

如何使用lapply重命名列表的子元素?

来自分类Dev

重命名列表中每个对象的字段

来自分类Dev

如何动态重命名列表的附加项

来自分类Dev

Haskell-重命名列表中的重复值

来自分类Dev

在 Python 中重命名列表索引 - 寻求代码解释

来自分类Dev

使用`lapply`重命名列表中的选定列

来自分类Dev

重命名列熊猫

来自分类Dev

重命名列标题

来自分类Dev

重命名列 R

来自分类Dev

R:命名列表和描述列表

来自分类Dev

熊猫有条件合并和更新,而无需重命名列

来自分类Dev

根据列表名称列表重命名列表的第一列

来自分类Dev

嵌套命名列表到数据框

来自分类Dev

在R中对命名列表进行排序

来自分类Dev

如何使用%s命名列表

来自分类Dev

展平R中的命名列表