创建一个命名列表,其中列表对象的变量名称作为列表名称

Dub*_*kay 3 r

我经常发现自己从多个变量创建一个列表,然后重命名该列表以使用这些变量名称作为列表的名称,这样我就可以通过$符号访问它们或bind_rows.id参数一起使用:

a <- 1:10
b <- 11:20
mylist <- list(a, b)
names(mylist) <- c("a", "b")
mylist$a
Run Code Online (Sandbox Code Playgroud)
[1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

我不知道如何跳过第二步并告诉 R 仅使用变量名称作为列表中的名称:

list(a, b)$a
Run Code Online (Sandbox Code Playgroud)
NULL
Run Code Online (Sandbox Code Playgroud)

这似乎应该是可行的,因为它是以下行为的默认行为data.frame

data.frame(a, b)$a
Run Code Online (Sandbox Code Playgroud)
[1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

但只有当变量都具有完全相同的长度时,使用此方法才有效。使用类似的东西可能看起来很简单

mylist <- list(a=a, b=b)
Run Code Online (Sandbox Code Playgroud)

但这感觉很多余,对于长变量名来说会变得很痛苦,而且我经常引入带有拼写错误的错误,直到后来我才注意到。

有没有办法在 R 中从一些变量构造一个列表,并自动用变量名命名列表?

akr*_*run 5

我们可以使用dplyr::lst

library(dplyr)
lst(a, b)$a
 [1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)

或者是链式的

lst(a, b)  %>% 
 pluck("a")
 [1]  1  2  3  4  5  6  7  8  9 10
Run Code Online (Sandbox Code Playgroud)