Let's go back to the original posting. > > > >> in each column, less than 10% values are 1, most of them are 0; > > > > > > > >> so I want to remove a row with value of zero in both columns when > >> calculate correlation between two columns. > >
So we're talking about correlations between binary variables. Suppose we have two 0-1-valued variables, x and y. Let A <- sum(x*y) # number of cases where x and y are both 1. Let B <- sum(x)-a # number of cases where x is 1 and y is 0 Let C <- sum(y)-a # number of cases where y is 1 and x is 0 Let D <- sum(!x * !y) # number of cases where x and y are both 0. N On Fri, 26 Jul 2024 at 12:07, Bert Gunter <bgunter.4...@gmail.com> wrote: > > If I have understood the request, I'm not sure that omitting all 0 > pairs for each pair of columns makes much sense, but be that as it > may, here's another way to do it by using the 'FUN' argument of combn > to encapsulate any calculations that you do. I just use cor() as the > calculation -- you can use anything you like that takes two vectors of > 0's and 1's and produces fixed length numeric results (or fromm which > you can extract such). > > I encapsulated it all in a little function. Note that I first > converted the data frame to a matrix. Because of their generality, > data frames carry a lot of extra baggage that can slow purely numeric > manipulations down. > > Anyway, here's the function, 'somecors' (I'm a bad name picker :( ! ) > > somecors <- function(dat, func = cor){ > dat <- as.matrix(dat) > indx <- seq_len(ncol(dat)) > combn(indx, 2, FUN = \(z) { > i <- z[1]; j <- z[2] > k <- dat[, i ] | dat[, j ] > c(z,func(dat[k,i ], dat[k,j ])) > }) > } > > Results come out as a matrix with combn(ncol(dat),2) columns, the > first 2 rows giving the pair of column numbers for each column,and > then 1 or more rows (possibly extracted) from whatever func you use. > Here's the results for your data formatted to 2 decimal places: > > > round(somecors(dat),2) > [,1] [,2] [,3] [,4] [,5] [,6] > [1,] 1.0 1.00 1.00 2.00 2 3.00 > [2,] 2.0 3.00 4.00 3.00 4 4.00 > [3,] -0.5 -0.41 -0.35 -0.41 NA -0.47 > Warning message: > In func(dat[k, i], dat[k, j]) : the standard deviation is zero > > The NA and warning comes in the 2,4 pair of columns because after > removing all zero rows in the pair, dat[,4] is all 1's, giving a zero > in the denominator of the cor() calculation -- again, assuming I have > correctly understood your request. If so, this might be something you > need to worry about. > > Again, feel free to ignore if I have misinterpreterd or this does not suit. > > Cheers, > Bert > > > On Thu, Jul 25, 2024 at 2:01 PM Rui Barradas <ruipbarra...@sapo.pt> wrote: > > > > Às 20:47 de 25/07/2024, Yuan Chun Ding escreveu: > > > Hi Rui, > > > > > > You are always very helpful!! Thank you, > > > > > > I just modified your R codes to remove a row with zero values in both > > > column pair as below for my real data. > > > > > > Ding > > > > > > dat<-gene22mut.coded > > > r <- P <- matrix(NA, nrow = 22L, ncol = 22L, > > > dimnames = list(names(dat), names(dat))) > > > > > > for(i in 1:22) { > > > #i=1 > > > x <- dat[[i]] > > > for(j in (1:22)) { > > > #j=2 > > > if(i == j) { > > > # there's nothing to test, assign correlation 1 > > > r[i, j] <- 1 > > > } else { > > > tmp <-cbind(x,dat[[j]]) > > > row0 <-rowSums(tmp) > > > tem2 <-tmp[row0!=0,] > > > tmp3 <- cor.test(tem2[,1],tem2[,2]) > > > r[i, j] <- tmp3$estimate > > > P[i, j] <- tmp3$p.value > > > } > > > } > > > } > > > r<-as.data.frame(r) > > > P<-as.data.frame(P) > > > > > > From: R-help <r-help-boun...@r-project.org> On Behalf Of Yuan Chun Ding > > > via R-help > > > Sent: Thursday, July 25, 2024 11:26 AM > > > To: Rui Barradas <ruipbarra...@sapo.pt>; r-help@r-project.org > > > Subject: Re: [R] please help generate a square correlation matrix > > > > > > HI Rui, Thank you for the help! You did not remove a row if zero values > > > exist in both column pair, right? Ding From: Rui Barradas <ruipbarradas@ > > > sapo. pt> Sent: Thursday, July 25, 2024 11: 15 AM To: Yuan Chun Ding > > > <ycding@ coh. org>; > > > > > > > > > HI Rui, > > > > > > > > > > > > Thank you for the help! > > > > > > > > > > > > You did not remove a row if zero values exist in both column pair, right? > > > > > > > > > > > > Ding > > > > > > > > > > > > From: Rui Barradas <ruipbarra...@sapo.pt<mailto:ruipbarra...@sapo.pt>> > > > > > > Sent: Thursday, July 25, 2024 11:15 AM > > > > > > To: Yuan Chun Ding <ycd...@coh.org<mailto:ycd...@coh.org>>; > > > r-help@r-project.org<mailto:r-help@r-project.org> > > > > > > Subject: Re: [R] please help generate a square correlation matrix > > > > > > > > > > > > Às 17: 39 de 25/07/2024, Yuan Chun Ding via R-help escreveu: > Hi R > > > users, > > I generated a square correlation matrix for the dat dataframe > > > below; > dat<-data. frame(g1=c(1,0,0,1,1,1,0,0,0), > > > > g2=c(0,1,0,1,0,1,1,0,0), > g3=c(1,1,0,0,0,1,0,0,0), > > > > > > > > > > > > > > > > > > Às 17:39 de 25/07/2024, Yuan Chun Ding via R-help escreveu: > > > > > > > > > > > >> Hi R users, > > > > > > > > > > > >> > > > > > > > > > > > >> I generated a square correlation matrix for the dat dataframe below; > > > > > > > > > > > >> dat<-data.frame(g1=c(1,0,0,1,1,1,0,0,0), > > > > > > > > > > > >> g2=c(0,1,0,1,0,1,1,0,0), > > > > > > > > > > > >> g3=c(1,1,0,0,0,1,0,0,0), > > > > > > > > > > > >> g4=c(0,1,0,1,1,1,1,1,0)) > > > > > > > > > > > >> library("Hmisc") > > > > > > > > > > > >> dat.rcorr = rcorr(as.matrix(dat)) > > > > > > > > > > > >> dat.r <-round(dat.rcorr$r,2) > > > > > > > > > > > >> > > > > > > > > > > > >> however, I want to modify this correlation calculation; > > > > > > > > > > > >> my dat has more than 1000 rows and 22 columns; > > > > > > > > > > > >> in each column, less than 10% values are 1, most of them are 0; > > > > > > > > > > > >> so I want to remove a row with value of zero in both columns when > > >> calculate correlation between two columns. > > > > > > > > > > > >> I just want to check whether those values of 1 are correlated between > > >> two columns. > > > > > > > > > > > >> Please look at my code in the following; > > > > > > > > > > > >> > > > > > > > > > > > >> cor.4gene <-matrix(0,nrow=4*4, ncol=4) > > > > > > > > > > > >> for (i in 1:4){ > > > > > > > > > > > >> #i=1 > > > > > > > > > > > >> for (j in 1:4) { > > > > > > > > > > > >> #j=1 > > > > > > > > > > > >> d <-dat[,c(i,j)]%>% > > > > > > > > > > > >> filter(eval(as.symbol(colnames(dat)[i]))!=0 | > > > > > > > > > > > >> eval(as.symbol(colnames(dat)[j]))!=0) > > > > > > > > > > > >> c <-cor.test(d[,1],d[,2]) > > > > > > > > > > > >> cor.4gene[i*j,]<-c(colnames(dat)[i],colnames(dat)[j], > > > > > > > > > > > >> c$estimate,c$p.value) > > > > > > > > > > > >> } > > > > > > > > > > > >> } > > > > > > > > > > > >> cor.4gene<-as.data.frame(cor.4gene)%>%filter(V1 !=0) > > > > > > > > > > > >> colnames(cor.4gene)<-c("gene1","gene2","cor","P") > > > > > > > > > > > >> > > > > > > > > > > > >> Can you tell me what mistakes I made? > > > > > > > > > > > >> first, why cor is NA when calculation of correlation for g1 and g1, I > > >> though it should be 1. > > > > > > > > > > > >> > > > > > > > > > > > >> cor.4gene$cor[is.na(cor.4gene$cor)]<-1 > > > > > > > > > > > >> cor.4gene$cor[is.na(cor.4gene$P)]<-0 > > > > > > > > > > > >> cor.4gene.sq <-pivot_wider(cor.4gene, names_from = gene1, values_from = > > >> cor) > > > > > > > > > > > >> > > > > > > > > > > > >> Then this line of code above did not generate a square matrix as what > > >> the HMisc library did. > > > > > > > > > > > >> How to fix my code? > > > > > > > > > > > >> > > > > > > > > > > > >> Thank you, > > > > > > > > > > > >> > > > > > > > > > > > >> Ding > > > > > > > > > > > >> > > > > > > > > > > > >> > > > > > > > > > > > >> ---------------------------------------------------------------------- > > > > > > > > > > > >> ------------------------------------------------------------ > > > > > > > > > > > >> -SECURITY/CONFIDENTIALITY WARNING- > > > > > > > > > > > >> > > > > > > > > > > > >> This message and any attachments are intended solely for the individual > > >> or entity to which they are addressed. This communication may contain > > >> information that is privileged, confidential, or exempt from disclosure > > >> under applicable law (e.g., personal health information, research data, > > >> financial information). Because this e-mail has been sent without > > >> encryption, individuals other than the intended recipient may be able to > > >> view the information, forward it to others or tamper with the > > >> information without the knowledge or consent of the sender. If you are > > >> not the intended recipient, or the employee or person responsible for > > >> delivering the message to the intended recipient, any dissemination, > > >> distribution or copying of the communication is strictly prohibited. If > > >> you received the communication in error, please notify the sender > > >> immediately by replying to this message and deleting the message and any > > >> accompanying files from your system. If, due to the security risks, you > > >> do not wish to rec > > > > > > > > > > > >> eive further communications via e-mail, please reply to this message > > >> and inform the sender that you do not wish to receive further e-mail > > >> from the sender. (LCP301) > > > > > > > > > > > >> ------------------------------------------------------------ > > > > > > > > > > > >> > > > > > > > > > > > >> [[alternative HTML version deleted]] > > > > > > > > > > > >> > > > > > > > > > > > >> ______________________________________________ > > > > > > > > > > > >> R-help@r-project.org<mailto:R-help@r-project.org<mailto:R-help@r-project.org%3cmailto:R-help@r-project.org>> > > >> mailing list -- To UNSUBSCRIBE and more, see > > > > > > > > > > > >> https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb8338TBM$<https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb8338TBM$><https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb8338TBM$%3chttps:/urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb8338TBM$%3e%3e> > > > > > > > > > <https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb8338TBM$%3chttps:/urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb8338TBM$%3e%3e> > > > > > >> <https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb8338TBM$%3chttps:/urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb8338TBM$%3e%3e>PLEASE > > >> do read the posting guide > > >> https://urldefense.com/v3/__http://www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb880tLw0$<https://urldefense.com/v3/__http:/www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb880tLw0$><https://urldefense.com/v3/__http:/www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb880tLw0$%3chttps:/urldefense.com/v3/__http:/www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb880tLw0$%3e%3e> > > > > > > > > > <https://urldefense.com/v3/__http:/www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb880tLw0$%3chttps:/urldefense.com/v3/__http:/www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb880tLw0$%3e%3e> > > > > > >> <https://urldefense.com/v3/__http:/www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb880tLw0$%3chttps:/urldefense.com/v3/__http:/www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6Hb880tLw0$%3e%3e>and > > >> provide commented, minimal, self-contained, reproducible code. > > > > > > > > > > > > Hello, > > > > > > > > > > > > > > > > > > > > > > > > You are complicating the code, there's no need for as.symbol/eval, the > > > > > > > > > > > > column numbers do exactly the same. > > > > > > > > > > > > > > > > > > > > > > > > # create the two results matrices beforehand > > > > > > > > > > > > r <- P <- matrix(NA, nrow = 4L, ncol = 4L, dimnames = list(names(dat), > > > > > > > > > > > > names(dat))) > > > > > > > > > > > > > > > > > > > > > > > > for(i in 1:4) { > > > > > > > > > > > > x <- dat[[i]] > > > > > > > > > > > > for(j in (1:4)) { > > > > > > > > > > > > if(i == j) { > > > > > > > > > > > > # there's nothing to test, assign correlation 1 > > > > > > > > > > > > r[i, j] <- 1 > > > > > > > > > > > > } else { > > > > > > > > > > > > tmp <- cor.test(x, dat[[j]]) > > > > > > > > > > > > r[i, j] <- tmp$estimate > > > > > > > > > > > > P[i, j] <- tmp$p.value > > > > > > > > > > > > } > > > > > > > > > > > > } > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > # these two results are equal up to floating-point precision > > > > > > > > > > > > dat.rcorr$r > > > > > > > > > > > > #> g1 g2 g3 g4 > > > > > > > > > > > > #> g1 1.0000000 0.1000000 0.3162278 0.1581139 > > > > > > > > > > > > #> g2 0.1000000 1.0000000 0.3162278 0.6324555 > > > > > > > > > > > > #> g3 0.3162278 0.3162278 1.0000000 0.0000000 > > > > > > > > > > > > #> g4 0.1581139 0.6324555 0.0000000 1.0000000 > > > > > > > > > > > > r > > > > > > > > > > > > #> g1 g2 g3 g4 > > > > > > > > > > > > #> g1 1.0000000 0.1000000 3.162278e-01 1.581139e-01 > > > > > > > > > > > > #> g2 0.1000000 1.0000000 3.162278e-01 6.324555e-01 > > > > > > > > > > > > #> g3 0.3162278 0.3162278 1.000000e+00 1.355253e-20 > > > > > > > > > > > > #> g4 0.1581139 0.6324555 1.355253e-20 1.000000e+00 > > > > > > > > > > > > > > > > > > > > > > > > # these two results are equal up to floating-point precision > > > > > > > > > > > > dat.rcorr$P > > > > > > > > > > > > #> g1 g2 g3 g4 > > > > > > > > > > > > #> g1 NA 0.79797170 0.4070838 0.68452834 > > > > > > > > > > > > #> g2 0.7979717 NA 0.4070838 0.06758329 > > > > > > > > > > > > #> g3 0.4070838 0.40708382 NA 1.00000000 > > > > > > > > > > > > #> g4 0.6845283 0.06758329 1.0000000 NA > > > > > > > > > > > > P > > > > > > > > > > > > #> g1 g2 g3 g4 > > > > > > > > > > > > #> g1 NA 0.79797170 0.4070838 0.68452834 > > > > > > > > > > > > #> g2 0.7979717 NA 0.4070838 0.06758329 > > > > > > > > > > > > #> g3 0.4070838 0.40708382 NA 1.00000000 > > > > > > > > > > > > #> g4 0.6845283 0.06758329 1.0000000 NA > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > You can put these two results in a list, like Hmisc::rcorr does. > > > > > > > > > > > > > > > > > > > > > > > > lst_rcorr <- list(r = r, P = P) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hope this helps, > > > > > > > > > > > > > > > > > > > > > > > > Rui Barradas > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > Este e-mail foi analisado pelo software antivírus AVG para verificar a > > > presença de vírus. > > > > > > > > > > > > https://urldefense.com/v3/__http://www.avg.com__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6HbloMCQMI$<https://urldefense.com/v3/__http:/www.avg.com__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6HbloMCQMI$><https://urldefense.com/v3/__http:/www.avg.com__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6HbloMCQMI$%3chttps:/urldefense.com/v3/__http:/www.avg.com__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6HbloMCQMI$%3e%09%5b%5balternative> > > > > > > > > > <https://urldefense.com/v3/__http:/www.avg.com__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6HbloMCQMI$%3chttps:/urldefense.com/v3/__http:/www.avg.com__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6HbloMCQMI$%3e%09%5b%5balternative> > > > > > > > > > [[alternative<https://urldefense.com/v3/__http:/www.avg.com__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6HbloMCQMI$%3chttps:/urldefense.com/v3/__http:/www.avg.com__;!!Fou38LsQmgU!tyykZkQmOKcwoWXEpV2ohbnr02thhHMabAcYLL_-7dteKHAabK-eo4rGDnwgSFjniAy8SO00L6HbloMCQMI$%3e%09%5b%5balternative>HTML > > > version deleted]] > > > > > > > > > > > > ______________________________________________ > > > > > > R-help@r-project.org<mailto:R-help@r-project.org> mailing list -- To > > > UNSUBSCRIBE and more, see > > > > > > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!s54ahZtZNAIyaIGV3C2p8lhXpYlHksC6XvFKZltf6g3ElJHOO3I1MYFecLQ4QeMO3MpP3qXz-YrhdUE$<https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-help__;!!Fou38LsQmgU!s54ahZtZNAIyaIGV3C2p8lhXpYlHksC6XvFKZltf6g3ElJHOO3I1MYFecLQ4QeMO3MpP3qXz-YrhdUE$> > > > > > > PLEASE do read the posting guide > > > https://urldefense.com/v3/__http://www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!s54ahZtZNAIyaIGV3C2p8lhXpYlHksC6XvFKZltf6g3ElJHOO3I1MYFecLQ4QeMO3MpP3qXzNRZxc6s$<https://urldefense.com/v3/__http:/www.R-project.org/posting-guide.html__;!!Fou38LsQmgU!s54ahZtZNAIyaIGV3C2p8lhXpYlHksC6XvFKZltf6g3ElJHOO3I1MYFecLQ4QeMO3MpP3qXzNRZxc6s$> > > > > > > and provide commented, minimal, self-contained, reproducible code. > > > > > Hello, > > > > Here are two other ways. > > > > The first is equivalent to your long format attempt. > > > > > > library(tidyverse) > > > > dat %>% > > names() %>% > > expand.grid(., .) %>% > > apply(1L, \(x) { > > tmp <- dat[rowSums(dat[x]) > 0, ] > > tmp2 <- cor.test(tmp[[ x[1L] ]], tmp[[ x[2L] ]]) > > c(tmp2$estimate, P = tmp2$p.value) > > }) %>% > > t() %>% > > as.data.frame() %>% > > cbind(tmp_df, .) %>% > > na.omit() > > > > > > The second is, in my opinion the one that makes more sense. If you see > > the results, cor is symmetric (as it should) so the calculations are > > repeated. If you only run the cor.tests on the combinations of > > names(dat) by groups of 2, it will save a lot of work. But the output is > > a much smaller a data.frame. > > > > > > cbind( > > combn(names(dat), 2L) %>% > > t() %>% > > as.data.frame(), > > combn(dat, 2L, FUN = \(d) { > > d2 <- d[rowSums(d) > 0, ] > > tmp2 <- cor.test(d2[[1L]], d2[[2L]]) > > c(tmp2$estimate, P = tmp2$p.value) > > }) %>% t() > > ) %>% na.omit() > > > > > > > > Hope this helps, > > > > Rui Barradas > > > > > > ______________________________________________ > > 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. > > ______________________________________________ > 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. ______________________________________________ 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.