如何用tidyverse将列表元素值设为对应元素名(避免for循环)
解决方案
你可以使用purrr包(tidyverse核心成员之一)的set_names()函数,配合管道符直接完成需求,完全不需要手动输入名称或使用循环:
library(tidyverse) # 原始列表 my_list <- list("a", "b", "c") # 用元素自身内容命名 named_list <- my_list %>% purrr::set_names()
验证结果:
> named_list $a [1] "a" $b [1] "b" $c [1] "c"
set_names()的逻辑很直接:当不传入额外命名参数时,它会自动提取每个列表元素的内容(要求元素为长度1的字符向量,你的场景正好符合),将其设为对应元素的名称。如果列表元素是其他类型(比如数值),也可以通过匿名函数转换后命名,例如my_list %>% set_names(map_chr(., as.character)),但你的场景用默认用法就足够。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

