Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R scatterplot loop using two variables

Tags:

loops

r

I'm trying to make a for loop to automatically generate ~50 scatterplots comparing two sets of data. It's a quality control analysis, so I'm looking at geochemical values that were analyzed twice (duplicates). So I have a list of 53 elements (periodic table elements) labeled Al1, Ag1, Au1..... and another list of 53 labeled Al2, Ag2....etc.

I've successfully gotten my loop to work for generating graphs that only need one variable, with the x axis being fixed, like below.

for(i in colNames){
  plt <- ggplot(YGS_Dupes, mapping = aes_string(x=Dup_Num, y = i)) +
geom_bar() + theme_calc() + ggtitle(paste(i, "Duplicate Comparison", sep=" - 
")) 
  print(plt)
  ggsave(paste0(i,".png"))
  Sys.sleep(2)
}

I set colNames to be the element columns, and the function runs through the different elements and generates a bar plot for each, where it's just showing Sample 1 or Sample 2 as the X axis (so it produces two bar plots side by side).

What I need to make now is a scatterplot where I compare the data from Al1 to Al2 or Fe1 to Fe2, so I need the for loop to run using two parallel sets of changing variables. I made the function for a single graph like so:

ggplot(YGS_Dup_Scatter, mapping = aes(x = Fe_pct1, y = 
Fe_pct2))+geom_point() 

and it looks like this:

Fe vs Fe Scatterplot Fe vs Fe Scatterplot

So what I have done is made a similar set of colNames groups, like below:

colNames_scatter_dup <- names(YGS_Dup_Scatter)[4:56]
colNames_scatter_dup2 <- names(YGS_Dup_Scatter)[57:109]

Where 4-56 are all the element 1 set and 57-109 are the element 2 set. They are ordered the same so I want 4/57, 5/58....etc to be pairs.

How do I set up my for loop equation to do this?

Thank you for any help

Edit: Adding the dput data for people to try. I had too many observations and variables so I cut most of them out:

Edit 2: Ok, so I made a nested loop and it makes what I want, but it also makes way too many graphs, shown below:

for (j in colNames_scatter_dup2) {
  for(i in colNames_scatter_dup){
    plt <- ggplot(YGS_Dup_Scatter, mapping = aes_string(x=j, y = i)) +
      geom_point() 
    print(plt)
    ggsave(paste0(i,".png"))
    Sys.sleep(2)
  }
}

The issue I have now is that it does Al1 vs Al2, then Ag1 vs Al2, ......then gets to Al1 vs Ag2.....and make hundreds of graphs. I only want to make the actual 53 element pairs, and I can't figure out how to restrict it to just those.

thanks

structure(list(DUP_COMP_ID = structure(c(1L, 12L, 23L, 34L, 45L, 
56L, 67L, 78L, 89L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 24L, 25L, 26L, 
27L, 28L, 29L, 30L, 31L, 32L, 33L, 35L, 36L, 37L, 38L, 39L, 40L, 
41L, 42L, 43L, 44L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 53L, 54L, 
55L, 57L, 58L, 59L, 60L, 61L, 62L, 63L, 64L, 65L, 66L, 68L, 69L, 
70L, 71L, 72L, 73L, 74L, 75L, 76L, 77L, 79L, 80L, 81L, 82L, 83L, 
84L, 85L, 86L, 87L, 88L, 90L, 91L, 92L, 93L, 94L, 95L, 96L, 97L, 
98L, 99L), .Label = c("DCI_1", "DCI_10", "DCI_11", "DCI_12", 
"DCI_13", "DCI_14", "DCI_15", "DCI_16", "DCI_17", "DCI_18", "DCI_19", 
"DCI_2", "DCI_20", "DCI_21", "DCI_22", "DCI_23", "DCI_24", "DCI_25", 
"DCI_26", "DCI_27", "DCI_28", "DCI_29", "DCI_3", "DCI_30", "DCI_31", 
"DCI_32", "DCI_33", "DCI_34", "DCI_35", "DCI_36", "DCI_37", "DCI_38", 
"DCI_39", "DCI_4", "DCI_40", "DCI_41", "DCI_42", "DCI_43", "DCI_44", 
"DCI_45", "DCI_46", "DCI_47", "DCI_48", "DCI_49", "DCI_5", "DCI_50", 
"DCI_51", "DCI_52", "DCI_53", "DCI_54", "DCI_55", "DCI_56", "DCI_57", 
"DCI_58", "DCI_59", "DCI_6", "DCI_60", "DCI_61", "DCI_62", "DCI_63", 
"DCI_64", "DCI_65", "DCI_66", "DCI_67", "DCI_68", "DCI_69", "DCI_7", 
"DCI_70", "DCI_71", "DCI_72", "DCI_73", "DCI_74", "DCI_75", "DCI_76", 
"DCI_77", "DCI_78", "DCI_79", "DCI_8", "DCI_80", "DCI_81", "DCI_82", 
"DCI_83", "DCI_84", "DCI_85", "DCI_86", "DCI_87", "DCI_88", "DCI_89", 
"DCI_9", "DCI_90", "DCI_91", "DCI_92", "DCI_93", "DCI_94", "DCI_95", 
"DCI_96", "DCI_97", "DCI_98", "DCI_99"), class = "factor"), Dup_Code = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), .Label = "Sample 1", class = "factor"), Dup_Code.1 = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), .Label = "Sample 2", class = "factor"), Ag_ppb1 = c(56L, 
58L, 52L, 59L, 68L, 318L, 50L, 70L, 398L, 114L, 38L, 52L, 63L, 
64L, 65L, 81L, 66L, 62L, 86L, 146L, 67L, 70L, 49L, 69L, 74L, 
55L, 55L, 47L, 109L, 41L, 78L, 115L, 65L, 373L, 59L, 47L, 85L, 
72L, 86L, 72L, 77L, 554L, 68L, 85L, 105L, 70L, 67L, 127L, 69L, 
67L, 38L, 59L, 284L, 94L, 57L, NA, 92L, 88L, 74L, 73L, 50L, NA, 
63L, 57L, 111L, 71L, 47L, 69L, 81L, 45L, 52L, 42L, 34L, 176L, 
73L, 140L, 87L, 41L, 36L, 204L, 272L, 52L, 37L, 45L, 187L, 180L, 
100L, 60L, 39L, 71L, 92L, 29L, 308L, 157L, 78L, 91L, NA, 60L, 
217L), As_ppm1 = c(4.3, 4.8, 4.6, 5, 1.9, 14.3, 3, 5.8, 49.7, 
9.2, 3.8, 3.1, 5.9, 5.4, 5, 4.3, 5.3, 4.2, 3.8, 35, 5.8, 6.6, 
3.3, 11.2, 3.5, 3.8, 3.8, 4.4, 8.8, 4.9, 3.6, 18.3, 3.6, 6.1, 
4.2, 4.4, 9, 7.3, 3.7, 3.4, 13.7, 21.9, 3.9, 5.8, 3.6, 4.4, 2.9, 
5.2, 4.9, 5.4, 4.4, 4.3, 5.5, 8.3, 3.4, NA, 6.2, 4.2, 3.5, 5.5, 
5, NA, 3.4, 4.2, 7.1, 5.1, 3.8, 6.9, 6.7, 3.2, 4.8, 4.3, 2.6, 
4.6, 4.8, 9.3, 7.5, 2.8, 4.2, 4.9, 17, 3.1, 3.9, 4.7, 9.7, 883.2, 
7.8, 5.1, 2.4, 10.4, 7.2, 2.9, 6.7, 9.3, 3.7, 7.3, NA, 4.8, 21.5
), Au_ppb1 = c(0.7, 4.6, 1.5, 0.6, 11.9, 2.4, 0.8, 0.8, 2.2, 
3.5, 0.4, 0.8, 0.9, 1.7, 1.2, 3.5, 1.4, 1.4, 2.2, 2.6, 3, 0.9, 
0.6, 1.5, 0.9, 0.7, 1.4, 3.5, 8.7, 0.4, 0.6, 2.4, 1.1, 1.7, 1.5, 
1.3, 0.1, 0.1, 4.5, 44.5, 0.8, 6.6, 48.7, 1.5, 0.7, 0.3, 0.8, 
1.1, 1.2, 5.5, 1.4, 1.4, 2.7, 1.9, 1, NA, 0.4, 1, 1.6, 0.3, 0.4, 
NA, 0.8, 1.8, 1.9, 0.1, 0.5, 1.4, 0.8, 0.2, 0.8, 0.6, 0.3, 1.1, 
1, 2.1, 0.8, 0.4, 0.9, 0.9, 1.2, 1.2, 1.2, 1.3, 1.2, 1.6, 1.8, 
0.5, 1.4, 1.3, 1.4, 0.1, 0.6, 1.9, 0.8, 1.5, NA, 0.6, 3.4), B_ppm1 = c(10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 21L, NA, 10L, 10L, 10L, 10L, 10L, NA, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, NA, 10L, 10L), Ba_ppm1 = c(141, 124.2, 171.9, 
171, 246.8, 359.3, 96, 205.4, 187.4, 195.3, 115.2, 134.9, 162.9, 
156.9, 186.7, 148.4, 164.9, 165.5, 329.1, 106.8, 137.3, 150.7, 
180.9, 123.4, 150.6, 122.7, 230.4, 176.1, 208.9, 154.5, 147.2, 
242.2, 184.2, 465.5, 217.2, 171.3, 286.6, 248, 243.1, 265.9, 
273.3, 317.4, 150.7, 272.7, 332.1, 293.1, 185.7, 262.9, 203.4, 
333, 185.2, 203.4, 300.8, 227.3, 193.2, NA, 328, 293.2, 225.7, 
286.9, 237.6, NA, 193.5, 293.8, 294.5, 252.2, 160.5, 277, 349.2, 
184.5, 231.3, 251.4, 150, 372.4, 237.7, 227.9, 271.8, 66.6, 92.8, 
53.4, 112.5, 172.6, 188.5, 177, 315.5, 193.8, 300.2, 132.9, 199.4, 
221.4, 375.6, 128.7, 82.7, 157.4, 175.5, 297.9, NA, 190.9, 206.4
), Be_ppm1 = c(0.3, 0.5, 0.2, 0.2, 0.2, 0.2, 0.3, 0.3, 0.6, 0.3, 
0.4, 0.4, 0.3, 0.3, 0.4, 0.5, 0.4, 0.3, 0.2, 0.3, 0.9, 0.4, 0.6, 
0.3, 0.5, 0.3, 0.3, 0.2, 0.3, 0.3, 0.4, 0.6, 0.3, 0.2, 0.3, 0.3, 
0.3, 0.2, 0.6, 0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.4, 
0.2, 0.3, 0.3, 0.2, 0.3, 0.3, NA, 0.3, 0.05, 0.3, 0.3, 0.2, NA, 
0.3, 0.5, 0.3, 0.5, 0.3, 0.3, 0.3, 0.3, 0.2, 0.3, 0.2, 0.4, 0.3, 
0.5, 0.4, 0.2, 0.1, 1.8, 1.8, 0.4, 0.2, 0.2, 0.8, 35.9, 0.3, 
0.4, 0.2, 0.4, 0.2, 0.4, 0.2, 0.4, 0.3, 0.4, NA, 0.4, 1.2), Bi_ppm1 = c(0.24, 
0.29, 0.21, 0.19, 0.13, 0.28, 0.15, 0.16, 0.73, 0.14, 0.12, 0.39, 
0.1, 0.12, 0.4, 0.42, 0.13, 0.13, 0.11, 6.67, 0.14, 0.22, 0.15, 
0.18, 0.09, 0.06, 0.09, 0.1, 0.18, 0.08, 0.08, 0.14, 0.06, 0.23, 
0.1, 0.09, 0.08, 0.14, 0.13, 0.06, 0.08, 0.13, 0.08, 0.15, 0.11, 
0.1, 0.07, 0.11, 0.1, 0.06, 0.11, 0.08, 0.11, 0.11, 0.08, NA, 
0.12, 0.22, 0.1, 0.13, 0.08, NA, 0.06, 0.18, 0.13, 0.1, 0.16, 
0.15, 0.13, 0.07, 0.09, 0.08, 0.06, 0.14, 0.07, 0.21, 0.17, 0.01, 
0.05, 2.07, 0.35, 0.13, 0.08, 0.09, 0.23, 0.55, 0.17, 1.1, 0.06, 
0.07, 0.14, 0.04, 0.06, 0.15, 0.08, 0.12, NA, 0.09, 0.97), Ca_pct1 = c(0.69, 
0.58, 0.46, 0.46, 0.42, 0.41, 0.51, 0.5, 0.6, 0.83, 0.42, 0.34, 
0.69, 0.98, 0.51, 0.43, 0.78, 0.44, 0.38, 0.56, 1.07, 0.46, 0.72, 
0.77, 1.08, 0.64, 0.46, 0.57, 0.5, 0.5, 0.88, 0.65, 0.67, 0.28, 
0.75, 0.59, 0.49, 0.72, 0.31, 0.42, 0.71, 0.14, 0.42, 0.69, 0.29, 
0.39, 0.31, 0.94, 0.7, 0.47, 0.71, 0.38, 0.31, 0.5, 0.47, NA, 
0.47, 0.37, 0.67, 0.68, 0.32, NA, 0.64, 0.31, 0.83, 0.52, 0.33, 
0.71, 0.91, 0.49, 0.58, 0.35, 0.34, 0.5, 0.54, 0.92, 0.4, 3.74, 
1.69, 0.21, 0.4, 0.45, 0.66, 0.49, 0.56, 0.88, 0.41, 0.41, 0.31, 
0.53, 0.96, 1.13, 0.35, 0.58, 0.33, 0.56, NA, 0.68, 0.32), Cd_ppm1 = c(0.13, 
0.22, 0.12, 0.15, 0.09, 0.99, 0.13, 0.19, 0.88, 0.34, 0.1, 0.15, 
0.17, 0.16, 0.14, 0.2, 0.14, 0.11, 0.15, 0.2, 0.14, 0.17, 0.1, 
0.17, 0.18, 0.13, 0.11, 0.13, 0.2, 0.12, 0.13, 0.27, 0.13, 0.37, 
0.21, 0.12, 0.18, 0.08, 0.14, 0.11, 0.15, 0.41, 0.19, 0.3, 0.23, 
0.15, 0.1, 0.34, 0.13, 0.13, 0.09, 0.15, 0.25, 0.17, 0.12, NA, 
0.17, 0.22, 0.14, 0.21, 0.11, NA, 0.1, 0.16, 0.27, 0.19, 0.13, 
0.22, 0.26, 0.05, 0.17, 0.15, 0.1, 0.39, 0.16, 0.47, 0.21, 0.17, 
0.14, 0.59, 1.11, 0.12, 0.13, 0.1, 0.63, 0.47, 0.33, 0.2, 0.11, 
0.26, 0.28, 0.11, 0.1, 0.55, 0.37, 0.29, NA, 0.18, 0.82), Ag_ppb2 = c(59L, 
73L, 69L, 75L, 85L, 319L, 43L, 73L, 405L, 121L, 33L, 45L, 71L, 
67L, 67L, 80L, 50L, 45L, 68L, 140L, 56L, 69L, 51L, 71L, 79L, 
51L, 36L, 52L, 93L, 31L, 98L, 134L, 67L, 386L, 47L, 46L, 90L, 
63L, 86L, 54L, 59L, 478L, 61L, 114L, 108L, 74L, 72L, 147L, 60L, 
74L, 40L, 56L, 256L, 112L, 62L, 87L, 71L, 104L, 109L, 55L, 45L, 
84L, 69L, 63L, 107L, 70L, 57L, 73L, 100L, 45L, 43L, 36L, 39L, 
161L, 108L, 100L, 93L, 32L, 45L, 187L, 267L, 68L, 37L, 57L, 228L, 
74L, 69L, 47L, 65L, 101L, 33L, 32L, 139L, 77L, 78L, NA, 59L, 
214L, 410L), As_ppm2 = c(3.9, 3.8, 4.4, 5.4, 1.7, 14.4, 3.1, 
5.9, 52.3, 9.7, 3.5, 2.7, 6.7, 5.2, 5, 4.3, 4.8, 4, 3.9, 31.9, 
5.3, 6.5, 3.6, 10.4, 3.5, 3.9, 3.6, 4.3, 8.9, 5.3, 3.8, 16.7, 
3.7, 6.1, 3.7, 4, 9.6, 6.4, 4, 3.1, 13.2, 22.1, 4.3, 6.9, 3.6, 
4.9, 3.4, 4.8, 4.1, 4.8, 4.2, 3.8, 5.3, 9.2, 3.3, 12.5, 5.3, 
4.4, 4.8, 5.7, 5, 5.5, 3.4, 4.4, 6.5, 4.8, 4, 6.5, 6.2, 3.4, 
4.5, 3.8, 2.6, 4.7, 8, 8.5, 7.6, 2.6, 4.7, 5.2, 15.8, 4, 3.1, 
5.3, 343.7, 7.4, 5.1, 3, 11, 7.3, 3, 6.8, 21.1, 4.1, 9.1, NA, 
4.4, 21, 122.1), Au_ppb2 = c(0.9, 1.6, 0.1, 1.3, 0.7, 1.8, 0.6, 
0.8, 1.6, 2.7, 0.4, 0.9, 0.9, 1.8, 1.5, 1.6, 1.5, 0.9, 2, 1.3, 
0.3, 3, 0.8, 2.5, 1.5, 0.4, 1.2, 1.4, 1, 1.1, 0.4, 113.3, 0.6, 
2.2, 1.9, 0.7, 0.5, 0.1, 1.8, 0.9, 1.4, 4.3, 1.6, 0.8, 0.7, 0.9, 
0.6, 2.4, 5.6, 1.2, 0.9, 1.1, 2.1, 1.1, 0.9, 0.8, 0.9, 1, 4, 
0.3, 1.5, 0.5, 1.2, 1, 1.5, 0.1, 1.2, 19.8, 32.8, 0.1, 0.7, 0.7, 
1, 0.5, 2.3, 1.6, 1.6, 0.6, 0.9, 1.7, 1.9, 1.3, 1.1, 1.1, 0.9, 
4.8, 0.5, 0.4, 1.6, 1, 0.1, 0.9, 1.3, 0.8, 2.7, NA, 0.8, 4, 3.6
), B_ppm2 = c(10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 22L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 23L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, NA, 10L, 10L, 10L), Ba_ppm2 = c(137.5, 
128, 175, 205.6, 262.7, 356.1, 91.2, 212.8, 207, 217.4, 111, 
132.4, 179.4, 139.8, 188.9, 164.4, 136, 158.7, 348.9, 96.6, 141.3, 
143.7, 187, 121.2, 166.9, 131, 235.9, 189.5, 201.4, 158.7, 148.3, 
227, 190, 415.9, 197.2, 178, 268, 221.1, 251.5, 243.3, 260.4, 
310, 165.8, 308.2, 342.8, 317, 185, 241.7, 189.2, 291.4, 199.4, 
214.7, 312.2, 273, 197.8, 265, 255, 315.2, 281.7, 326, 236.5, 
229.7, 197.8, 308.4, 277.2, 258.7, 185.7, 261.2, 354.7, 177.7, 
213.2, 226.7, 159.2, 369.5, 359.1, 224.9, 275.4, 54, 106.7, 53.4, 
100.9, 194.7, 188.4, 187.4, 162.9, 237.7, 146.9, 189, 214.9, 
368.1, 134.8, 82.4, 130.4, 187.8, 291.2, NA, 171.9, 209.5, 318.5
), Be_ppm2 = c(0.2, 0.3, 0.4, 0.3, 0.3, 0.4, 0.1, 0.3, 0.6, 0.4, 
0.4, 0.5, 0.4, 0.3, 0.5, 0.7, 0.3, 0.3, 0.2, 0.4, 0.7, 0.4, 0.4, 
0.3, 0.4, 0.2, 0.3, 0.3, 0.5, 0.6, 0.5, 0.4, 0.3, 0.3, 0.3, 0.2, 
0.2, 0.2, 0.5, 0.2, 0.3, 0.3, 0.2, 0.4, 0.3, 0.2, 0.2, 0.2, 0.3, 
0.2, 0.3, 0.2, 0.3, 0.5, 0.3, 0.4, 0.3, 0.3, 0.2, 0.3, 0.1, 0.5, 
0.2, 0.6, 0.3, 0.4, 0.4, 0.2, 0.4, 0.3, 0.3, 0.2, 0.2, 0.3, 0.5, 
0.3, 0.3, 0.2, 0.2, 1.6, 1.8, 0.5, 0.2, 0.6, 33.1, 0.1, 0.6, 
0.05, 0.2, 0.3, 0.7, 0.2, 1.5, 0.3, 0.3, NA, 0.3, 1.2, 1.4), 
Bi_ppm2 = c(0.23, 0.28, 0.23, 0.21, 0.12, 0.26, 0.14, 0.16, 
0.69, 0.16, 0.12, 0.34, 0.11, 0.11, 0.41, 0.36, 0.12, 0.11, 
0.11, 2.86, 0.14, 0.23, 0.19, 0.18, 0.1, 0.05, 0.08, 0.11, 
0.15, 0.08, 0.09, 0.15, 0.06, 0.24, 0.08, 0.09, 0.09, 0.12, 
0.14, 0.07, 0.07, 0.12, 0.09, 0.18, 0.1, 0.1, 0.09, 0.09, 
0.11, 0.06, 0.1, 0.07, 0.1, 0.12, 0.08, 0.09, 0.1, 0.2, 0.09, 
0.1, 0.09, 0.17, 0.06, 0.15, 0.12, 0.1, 0.17, 0.13, 0.12, 
0.05, 0.08, 0.08, 0.07, 0.17, 0.12, 0.21, 0.17, 0.01, 0.05, 
1.93, 0.33, 0.15, 0.05, 0.08, 0.68, 0.12, 0.3, 0.06, 0.06, 
0.14, 0.05, 0.08, 0.4, 0.09, 0.12, NA, 0.07, 0.98, 2.21), 
Ca_pct2 = c(0.6, 0.56, 0.48, 0.53, 0.4, 0.41, 0.47, 0.51, 
0.58, 0.86, 0.41, 0.33, 0.7, 0.9, 0.51, 0.45, 0.67, 0.44, 
0.39, 0.56, 1.05, 0.48, 1.21, 0.83, 1.1, 0.66, 0.45, 0.62, 
0.5, 0.47, 1.04, 0.66, 0.64, 0.3, 0.74, 0.58, 0.49, 0.65, 
0.31, 0.42, 0.62, 0.13, 0.42, 0.84, 0.29, 0.4, 0.32, 1.01, 
0.6, 0.46, 0.71, 0.41, 0.3, 0.58, 0.5, 1.02, 0.4, 0.39, 0.87, 
0.79, 0.34, 0.44, 0.67, 0.31, 0.79, 0.47, 0.33, 0.67, 0.86, 
0.5, 0.49, 0.29, 0.35, 0.5, 0.87, 0.8, 0.39, 3.36, 1.78, 
0.22, 0.36, 0.5, 0.57, 0.53, 0.58, 0.37, 0.43, 0.3, 0.46, 
1.03, 1.12, 0.36, 0.48, 0.38, 0.52, NA, 0.52, 0.33, 1.21), 
Cd_ppm2 = c(0.13, 0.19, 0.12, 0.15, 0.1, 0.97, 0.1, 0.21, 
0.92, 0.35, 0.1, 0.09, 0.16, 0.18, 0.16, 0.17, 0.11, 0.11, 
0.2, 0.16, 0.11, 0.16, 0.13, 0.17, 0.2, 0.13, 0.14, 0.15, 
0.25, 0.05, 0.18, 0.28, 0.09, 0.3, 0.22, 0.09, 0.18, 0.12, 
0.1, 0.1, 0.15, 0.3, 0.17, 0.33, 0.2, 0.15, 0.1, 0.59, 0.16, 
0.16, 0.1, 0.13, 0.24, 0.21, 0.11, 0.46, 0.12, 0.24, 0.23, 
0.17, 0.11, 0.22, 0.13, 0.18, 0.24, 0.16, 0.17, 0.18, 0.23, 
0.09, 0.12, 0.1, 0.1, 0.35, 0.37, 0.43, 0.24, 0.16, 0.17, 
0.62, 1, 0.13, 0.12, 0.11, 0.56, 0.23, 0.22, 0.15, 0.23, 
0.28, 0.12, 0.1, 0.97, 0.36, 0.3, NA, 0.19, 0.89, 3.59)), class = "data.frame", row.names = c(NA, 
-99L))
like image 795
Avery_Tellig Avatar asked Mar 06 '26 22:03

Avery_Tellig


1 Answers

Consider Map (wrapper to mapply) which is the iteration function to run elementwise between equal length lists and saves output into a list. Doing so, you avoid extraneous looping as seen with nested for loops approach.

# EXTRACT NEEDED NAMES
samples1 <- names(YGS_Dupes)[grep("1$", names(YGS_Dupes))][-1]  # -1 TO REMOVE Dupe_Code.1 
samples2 <- names(YGS_Dupes)[grep("2$", names(YGS_Dupes))]

# SET UP LOOPING FUNCTION
plot_fct <- function(s1, s2) {      
  s_title <- gsub("1", "", s1)

  p <- ggplot(YGS_Dupes, aes_string(x=s1, y=s2)) + geom_point(color="#0072B2") + 
    ggtitle(paste(s_title, "Duplicate Comparison", sep=" - ")) +
    theme(plot.title = element_text(hjust = 0.5), legend.position="top",
          axis.text.x = element_text(angle = 90, hjust = 1, vjust=0.5))

  ggsave(paste0(s_title,".png"))

  return(p)
}

# BUILD LIST LOOPING ELEMENTWISE
plot_list2 <- Map(plot_fct, samples1, samples2)

# OUTPUT PLOTS BY NAME
plot_list2$Ag_ppb1
plot_list2$As_ppm1
plot_list2$Au_ppb1

Output (first three plots)

Plot Output

like image 106
Parfait Avatar answered Mar 08 '26 12:03

Parfait



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!