我有两串变量名称,看起来像这样
> names_a = paste(paste0('a', seq(0,6,1)), collapse = ", ")
> names_a
[1] "a0, a1, a2, a3, a4, a5, a6"
> names_b = paste(paste0('b', seq(0,6,1)), collapse = ", ")
> names_b
[1] "b0, b1, b2, b3, b4, b5, b6"
每个a
和b
变量都包含一个id向量,例如:
> head(a3)
[1] "1234" "56567" "457659"...
我的目标是获得所有可能的a
和b
ID对。为此,我尝试粘贴变量'将rigth命名为函数rbind
,然后命名为expand.grid
pairs = expand.grid(rbind(parse(text = names_a), rbind(parse(text = names_b))
我的意思是我尝试使用a0
将所有a6
到rbind
向量折叠为单个向量,将其命名为a
,所有{{1}都相同然后找到b
和a
令人惊讶的是没有任何作用。可以修复吗?
答案 0 :(得分:2)
这样的东西?
a1 = 1:2
a2 = 3:4
b1 = 5:6
b2 = 7:8
expand.grid(do.call(rbind, mget(paste("a", 1:2, sep = ""))),
do.call(rbind, mget(paste("b", 1:2, sep = ""))))
# Var1 Var2
#1 1 5
#2 3 5
#3 2 5
#4 4 5
#5 1 7
#6 3 7
#7 2 7
#8 4 7
#9 1 6
#10 3 6
#11 2 6
#12 4 6
#13 1 8
#14 3 8
#15 2 8
#16 4 8
答案 1 :(得分:2)
将所有a0
到a6
折叠到一个向量中:
a <- as.vector(sapply(strsplit(gsub(" ","",names_a),",")[[1]],function(x) get(x)))
(或者,如果您没有将名称作为单个字符串进行解析):
a <- as.vector(sapply(paste0("a",0:6),function(x) get(x)))
对b执行相同操作,然后
merge(a,b) #all pairs
如果任何a或b变量都有重复项,这将生成重复项,因此您可能希望将unique
添加到a和b的折叠中