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