I have a sense of deja vu: https://www.mail-archive.com/r-help@r-project.org/msg250494.html
There is some good advice there. > On Sep 9, 2018, at 3:49 PM, David Disabato <ddisa...@gmail.com> wrote: > > Hi R-help, > > I am trying to create a for loop with multiple iteration indexes. I don't > want to use two different for loops nested together because I don't need > the full matrix of the two indexes, just the diagonal elements (e.g., i[1] > & j[1] and i[2] & j[2], but not i[1] & j[2]). Is there a way to specify > both i and j in a single for loop? Here is a simplified example of > pseudo-code where x and y are equally sized character vectors with column > names and dat is their dataframe (obviously this code doesn't run in R, but > hopefully you perceive my goal): > > r <- list() > n <- 0 > for (i in x; j in y) { > n <- n + 1 > r[[n]] <- cor(x = dat[, i], y = dat[, j]) > } > print(r) > > I realize there are other solutions to this particular correlation example, > but my actual problem is much more complicated, so I am hoping for a > solution that generalizes across any code within the for loop. A more aRtful way (than a for loop) to approach this is with mapply: i <- head(colnames(mtcars)) j <- tail(colnames(mtcars)) r <- mapply(function(i, j, dat) cor( x = dat[, i], y = dat[, j]), i=i , j=j , MoreArgs = list( dat = mtcars), SIMPLIFY = FALSE, USE.NAMES = FALSE) and if you want, maybe USE.NAMES = paste(i, j, sep="_") Chuck ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.