我经常发现自己从多个变量创建一个列表,然后重命名该列表以使用这些变量名称作为列表的名称,这样我就可以通过$符号访问它们或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 中从一些变量构造一个列表,并自动用变量名命名列表?
我们可以使用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)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |