将一串变量名称粘贴到 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"
每个a
和b
变量包含一个id向量,例如:
> head(a3)
[1] "1234" "56567" "457659"...
我的目标是获取所有可能的 a
和 b
id 对。为此,我尝试将变量的名称直接粘贴到函数 rbind
中,然后再粘贴到 expand.grid
pairs = expand.grid(rbind(parse(text = names_a), rbind(parse(text = names_b))
我的意思是我尝试使用 rbind
将所有 a0
到 a6
向量折叠成一个向量,让它命名为 a
,所有 b
的向量,然后找到 a
和 b
中的所有值对
令人惊讶的是,没有任何效果。可以修复吗?
是这样的吗?
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
将 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
的折叠中
我有两串变量名,如下所示
> 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 对。为此,我尝试将变量的名称直接粘贴到函数 rbind
中,然后再粘贴到 expand.grid
pairs = expand.grid(rbind(parse(text = names_a), rbind(parse(text = names_b))
我的意思是我尝试使用 rbind
将所有 a0
到 a6
向量折叠成一个向量,让它命名为 a
,所有 b
的向量,然后找到 a
和 b
令人惊讶的是,没有任何效果。可以修复吗?
是这样的吗?
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
将 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