Better idea, Ben!

It would work as you might expect it to to produce the same results as
the above:

##first make sure your regressor is a matrix:
pur2 <- matrix(purity2, ncol =1)
## convert the data frame variables into a matrix
dat <- as.matrix(gem751be.rpkm[ , 74:35164])
##then
result <- residuals(lm.fit( x= pur2, y = dat))

Cheers,
Bert

On Fri, Aug 9, 2024 at 6:38 PM Ben Bolker <bbol...@gmail.com> wrote:
>
> You can also fit a linear model with a matrix-valued response
> variable, which should be even faster (not sure off the top of my head
> how to get the residuals and reshape them to the dimensions you want)
>
> On Fri, Aug 9, 2024 at 9:31 PM Bert Gunter <bgunter.4...@gmail.com> wrote:
> >
> > See ?lm.fit.
> > I must be missing something, because:
> >
> > results <- sapply(74:35164, \(i) residuals(lm.fit(purity2,
> > gem751be.rpkm[, i] )))
> >
> > would give you a 751 x 35091 matrix of the residuals from each of the
> > regressions.
> > I assume it will be considerably faster than all the overhead you are
> > carrying in your current code, but of course you'll have to try it and
> > see. ... Assuming that I have interpreted your request correctly.
> > Ignore if not.
> >
> > Cheers,
> > Bert
> >
> > On Fri, Aug 9, 2024 at 4:50 PM Yuan Chun Ding via R-help
> > <r-help@r-project.org> wrote:
> > >
> > > Dear R users,
> > >
> > > I am running the following code below,  the gem751be.rpkm is a dataframe 
> > > with dim of 751 samples by 35164 variables,  73 phenotypic variables in 
> > > the furst to 73rd column and 35091 genomic variables or genes in the 74th 
> > > to 35164th columns.  What I need to do is to calculate the residuals for 
> > > each gene using the simple linear regression model of genelist[i] ~ 
> > > purity2;
> > >
> > > The following code is running,  it takes long time, but I have an 
> > > expensive ThinkStation window computer.
> > > Can you provide a fast way to do it?
> > >
> > > Thank you,
> > >
> > > Ding
> > >
> > > ---------------------------------------------------------------------------------
> > >
> > >
> > > gem751be.rpkm <-merge(gem751be10, as.data.frame(t(rna849.fpkm2)),
> > > +                           by.x="id2",by.y=0)
> > > >   row.names(gem751be.rpkm)<-gem751be.rpkm$id3
> > > >   
> > > > colnames(gem751be.rpkm)<-gsub(colnames(gem751be.rpkm),pattern="-",replacement="_")
> > > >   genelist <- gem751be.rpkm %>% dplyr::select(74:35164)
> > > >   residuals <- NULL
> > > >   for (i in 1:length(genelist)) {
> > > +     #i=1
> > > +     formula <- reformulate("purity2", response=names(genelist)[i])
> > > +     model <- lm(formula, data = gem751be.rpkm)
> > > +     resi <- as.data.frame(residuals(model))
> > > +     colnames(resi)[1]<-names(genelist)[i]
> > > +     resi <-as.data.frame(t(resi))
> > > +     residuals <- rbind(residuals, resi)
> > > +   }
> > >
> > >
> > >
> > > ----------------------------------------------------------------------
> > > ------------------------------------------------------------
> > > -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 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.

Reply via email to