Nonlinear Scaling Normalization
I feel the key to generalizing your code is to store your variables into a matrix. Then let vectorized functions (colMeans, cor, *, etc.) do their magic:

A &lt;- cbind(A1, A2, A3, A4)

VN_Normalization &lt;- function(A) {
   m  &lt;- colMeans(A)
   RG &lt;- m %o% (1/m)
   scales &lt;- colMeans(RG * abs(cor(A)))
   A_Normalized &lt;- t(t(A) * scales)

   n &lt;- ncol(A)
   i &lt;- seq_len(n)
   labels &lt;- c(sprintf("Array%i", i),
               sprintf("Array%i_Normalized", i))
   boxplot(cbind(A, A_Normalized),
           las = 2, names = labels,
           col = c(rep("white", n), rainbow(n)))  
}


Please let me know if I missed anything (I assumed A1, A2, etc. were numeric vectors of equal lengths.)