我正在尝试将数字或向量合并到列表中
vector1<- c(0:9)
vector2<- c(10:19)
vector3<- c(20:29)
vector4<- c(30:39)
理想情况下,我希望能够从环境中定义的所有对象中选择名称与vector
相匹配的对象。
我当时在想些事情,但我不知道如何继续:
library(stringr)
files<-ls()
str_subset(files, "vector")
我得到了正确名称的列表,但是此向量是字符。我需要获取一个包含vector1, vector2, vector3, vector4
的列表
有什么建议吗?
非常感谢
答案 0 :(得分:3)
这将创建一个列表。 .GlobalEnv
已明确显示,但如果感兴趣的环境是默认环境,则可以将其省略,即编写mget(ls(pattern = "^vector"))
就足够了。如果要确保只获取vector
形式的名称,后跟数字,请使用^vector\\d+$
作为正则表达式。
vector1 <- vector2 <- vector3 <- 1:4
mget(ls(pattern = "^vector", envir = .GlobalEnv), .GlobalEnv)
提供此列表:
$`vector1`
[1] 1 2 3 4
$vector2
[1] 1 2 3 4
$vector3
[1] 1 2 3 4
答案 1 :(得分:0)
这是使用parse
,eval
和lapply
的一种选择。如果需要,可以使用str_subset
代替grep
。
files <- ls()
vecs <- grep("vector", files, value = TRUE)
lapply(vecs, function(x) eval(parse(text = x)))
# [[1]]
# [1] 0 1 2 3 4 5 6 7 8 9
#
# [[2]]
# [1] 10 11 12 13 14 15 16 17 18 19
#
# [[3]]
# [1] 20 21 22 23 24 25 26 27 28 29
#
# [[4]]
# [1] 30 31 32 33 34 35 36 37 38 39