将一串变量名称粘贴到 R 中的函数中

Paste a string of variable names into function in R

我有两串变量名,如下所示

> 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"

每个ab变量包含一个id向量,例如:

> head(a3)
[1] "1234" "56567" "457659"...

我的目标是获取所有可能的 ab id 对。为此,我尝试将变量的名称直接粘贴到函数 rbind 中,然后再粘贴到 expand.grid

pairs = expand.grid(rbind(parse(text = names_a), rbind(parse(text = names_b))

我的意思是我尝试使用 rbind 将所有 a0a6 向量折叠成一个向量,让它命名为 a,所有 b 的向量,然后找到 ab

中的所有值对

令人惊讶的是,没有任何效果。可以修复吗?

是这样的吗?

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

a0a6 的所有内容折叠成一个向量:

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

的折叠中