R 如何根据字符串匹配(在名称中)将以前定义的对象合并到列表中?

R 如何根据字符串匹配(在名称中)将以前定义的对象合并到列表中?,r,R,我正在尝试将数字或向量合并到列表中: vector1<- c(0:9) vector2<- c(10:19) vector3<- c(20:29) vector4<- c(30:39) 我得到了一个正确名称的列表,但这个向量是字符。我需要得到一个包含向量1、向量2、向量3、向量4的列表 建议? 非常感谢这里有一个选项可以使用parse、eval和lappy。如果需要,可以使用stru子集而不是grep files <- ls() vecs <- g

我正在尝试将数字或向量合并到列表中:

 vector1<- c(0:9)
 vector2<- c(10:19)
 vector3<- c(20:29)
 vector4<- c(30:39)
我得到了一个正确名称的列表,但这个向量是字符。我需要得到一个包含向量1、向量2、向量3、向量4的列表 建议?
非常感谢

这里有一个选项可以使用
parse
eval
lappy
。如果需要,可以使用
stru子集
而不是
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

文件这将创建一个列表
.GlobalEnv
是显式显示的,但如果感兴趣的环境是这样,则可以忽略它,因为这是默认设置,即它足以写入
mget(ls(pattern=“^vector”)
。如果要确保只获取格式为
vector
后跟数字的名称,请使用
^vector\\d+$
作为正则表达式

vector1 <- vector2 <- vector3 <- 1:4

mget(ls(pattern = "^vector", envir = .GlobalEnv), .GlobalEnv)

这不是首选的方式。使用
mget
(参见Gabor的答案)。
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