如何在R中创建列表时自动将变量名设为列表元素名称?
在R中自动用变量名命名列表元素的方法
当然有办法跳过手动重命名的步骤,直接让列表元素使用原变量名作为名称,以下是几种实用方案:
1. 使用dplyr::lst()函数
dplyr包中的lst()函数专门设计用来创建自动以变量名命名元素的列表,写法简洁不需要重复变量名:
library(dplyr) a <- 1:10 b <- 11:20 mylist <- lst(a, b) # 直接通过$访问元素 mylist$a
输出:
[1] 1 2 3 4 5 6 7 8 9 10
2. 基础R的mget()函数
如果不想加载额外包,可以用基础R的mget(),它会根据传入的变量名字符向量,从当前环境中提取变量并创建命名列表:
a <- 1:10 b <- 11:20 mylist <- mget(c("a", "b")) mylist$b
输出:
[1] 11 12 13 14 15 16 17 18 19 20
如果需要批量提取符合某种模式的变量,还可以结合ls()使用,比如mget(ls(pattern = "^var"))提取所有以var开头的变量。
3. 自定义基础R函数
如果需要完全自定义逻辑,可以自己写一个简单的函数实现自动命名:
named_list <- function(...) { input_args <- list(...) # 获取传入的变量名作为列表元素名称 names(input_args) <- as.character(match.call()[-1]) input_args } # 使用示例 a <- 1:10 b <- 11:20 mylist <- named_list(a, b) mylist$a
这个函数通过match.call()获取调用时传入的变量名,自动赋值给列表的名称属性,完全不依赖外部包。
内容的提问来源于stack exchange,提问作者Dubukay
相关产品推荐
相关产品推荐

