R 将变量传递给GGM

R 将变量传递给GGM,r,ggplot2,R,Ggplot2,我有一个名为panel的数据集,其中有多个感兴趣的分类变量 我想编写一个程序,使用for循环为每一对绘制马赛克图。 vars是具有以下列名称的向量: vars [1] "region" "urb" "sex" "race" "grade" "dt01" "dt02" "dt03" [9] "dt06" "dt07" "exercise" "kq7" 这是我的节目: library(ggmosaic) for (i in

我有一个名为
panel
的数据集,其中有多个感兴趣的分类变量

我想编写一个程序,使用
for
循环为每一对绘制马赛克图。
vars
是具有以下列名称的向量:

vars
 [1] "region"   "urb"      "sex"      "race"    "grade"   "dt01"   "dt02"     "dt03"    
 [9] "dt06"     "dt07"     "exercise" "kq7"
这是我的节目:

library(ggmosaic)

for (i in 1:12){
  for (j in 1:12){
    a <- vars[i]
    b <- vars[j]
    if (j > i){
      m <- ggplot(data = panel) 
      m <- m + geom_mosaic(aes(x = product(a), fill = b))
    }
    print(m)
  }
}  

我尝试了
aes\u string
,但没有效果。

两条建议供考虑

1:生成您的配对&使用单个循环来遍历它们,而不是重复组合的双循环

vars <- c("region", "urb", "sex", "race", "grade", "dt01",     
          "dt02", "dt03", "dt06", "dt07", "exercise", "kq7")
vars.pair <- combn(vars, 2, simplify = FALSE) # list of all valid pairs

> head(vars.pair)
[[1]]
[1] "region" "urb"   

[[2]]
[1] "region" "sex"   

[[3]]
[1] "region" "race"  

[[4]]
[1] "region" "grade" 

[[5]]
[1] "region" "dt01"  

[[6]]
[1] "region" "dt02"  

两项建议供考虑

1:生成您的配对&使用单个循环来遍历它们,而不是重复组合的双循环

vars <- c("region", "urb", "sex", "race", "grade", "dt01",     
          "dt02", "dt03", "dt06", "dt07", "exercise", "kq7")
vars.pair <- combn(vars, 2, simplify = FALSE) # list of all valid pairs

> head(vars.pair)
[[1]]
[1] "region" "urb"   

[[2]]
[1] "region" "sex"   

[[3]]
[1] "region" "race"  

[[4]]
[1] "region" "grade" 

[[5]]
[1] "region" "dt01"  

[[6]]
[1] "region" "dt02"  
for(i in seq_along(vars.pair)){

  p1 <- vars.pair[[i]][1]
  p2 <- vars.pair[[i]][2]

  m <- ggplot(data = panel) +
    geom_mosaic(aes_string(x = paste0("product(", p1, ")"),
                           fill = p2))
  print(m)

}