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.

Reply via email to