Hello
I have a time-comsuming program which need to simplify, I have tested
the annotated program as follow:
> #define function which will be call
> calsta <- function(c, n=100000)
+ {
+ i <- seq(from=0, length=c)
+ logx <- lchoose(NT-n, CT-i) + lchoose(n, i)
+ logmax <- max(logx)
+ logmax + log(sum(exp(logx - logmax)))
+ }
> CT=6000 #assignment to CT
> NT=29535210 #assignment to NT
>
> vec<-c(2331,524,918,218,1100,547,289,1167,450,1723)
> vec
[1] 2331 524 918 218 1100 547 289 1167 450 1723
> vec<-rep(vec,1000)#replicate the vec 1000 times
> length(vec)
[1] 10000
> #then I'd like to make vector "vec" call function calsta element-wise
> #and save the output to vector "result"
> system.time(result<-sapply(vec,calsta))
user system elapsed
26.45 0.03 26.70
>
> system.time(for (i in 1:10000) result[i]=calsta(vec[i]))
user system elapsed
27.74 0.14 28.94
I have about 300,000 such 26.70/ 28.94 seconds, so the approximate computation
time is 100 days
What a terrible thing to do!!!
Any modification, nomatter how subtle, will be a big help for me
Thank you in advance
Yours sincerely
ZhaoXing
Department of Health Statistics
West China School of Public Health
Sichuan University
No.17 Section 3, South Renmin Road
Chengdu, Sichuan 610041
P.R.China
__________________________________________________
¸Ï¿ì×¢²áÑÅ»¢³¬´óÈÝÁ¿Ãâ·ÑÓÊÏä?
______________________________________________
[email protected] mailing list
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.