Dear All, reposting, because I did not find a solution, maybe someone could check the example below. It's taken from the help page of survdiff. Executing it, gives the error "Error in floor(temp) : Non-numeric argument to mathematical function" best regards, Heinz library(survival) ## Example from help page of survdiff ## Expected survival for heart transplant patients based on ## US mortality tables expect <- survexp(futime ~ ratetable(age=(accept.dt - birth.dt), sex=1,year=accept.dt,race="white"), jasa, cohort=FALSE, ratetable=survexp.usr) Error in floor(temp) : Non-numeric argument to mathematical function sessionInfo('survival') R version 2.12.1 Patched (2010-12-18 r53869) Platform: i386-pc-mingw32/i386 (32-bit) locale: [1] LC_COLLATE=German_Switzerland.1252 LC_CTYPE=German_Switzerland.1252 [3] LC_MONETARY=German_Switzerland.1252 LC_NUMERIC=C [5] LC_TIME=German_Switzerland.1252 attached base packages: character(0) other attached packages: [1] survival_2.36-2 loaded via a namespace (and not attached): [1] base_2.12.1 graphics_2.12.1 grDevices_2.12.1 methods_2.12.1 [5] splines_2.12.1 stats_2.12.1 tools_2.12.1 utils_2.12.1 > traceback() 2: match.ratetable(rdata, ratetable) 1: survexp(futime ~ ratetable(age = (accept.dt - birth.dt), sex = 1, year = accept.dt, race = "white"), jasa, cohort = FALSE, ratetable = survexp.usr) >
On Dec 31, 2010, at 10:21 , Heinz Tuechler wrote:> Dear All, > > reposting, because I did not find a solution, maybe someone could check the example below. > > It's taken from the help page of survdiff. Executing it, gives the error > > "Error in floor(temp) : Non-numeric argument to mathematical function"Hmm, it's not happening to me (Mac OSX) either with 2.12.1 or the current R-patched (r53892). Could be a platform issue (sounds unlikely), a local user issue, or a locale one. Could you set options(error=recover) and find out what is the value of "temp" when the error occurs?> > best regards, > > Heinz > > library(survival) > > ## Example from help page of survdiff > ## Expected survival for heart transplant patients based on > ## US mortality tables > expect <- > survexp(futime ~ ratetable(age=(accept.dt - birth.dt), > sex=1,year=accept.dt,race="white"), > jasa, cohort=FALSE, > ratetable=survexp.usr) > > Error in floor(temp) : Non-numeric argument to mathematical function > > sessionInfo('survival') > > R version 2.12.1 Patched (2010-12-18 r53869) > Platform: i386-pc-mingw32/i386 (32-bit) > > locale: > [1] LC_COLLATE=German_Switzerland.1252 LC_CTYPE=German_Switzerland.1252 > [3] LC_MONETARY=German_Switzerland.1252 LC_NUMERIC=C > [5] LC_TIME=German_Switzerland.1252 > > attached base packages: > character(0) > > other attached packages: > [1] survival_2.36-2 > > loaded via a namespace (and not attached): > [1] base_2.12.1 graphics_2.12.1 grDevices_2.12.1 methods_2.12.1 > [5] splines_2.12.1 stats_2.12.1 tools_2.12.1 utils_2.12.1 > > traceback() > 2: match.ratetable(rdata, ratetable) > 1: survexp(futime ~ ratetable(age = (accept.dt - birth.dt), sex = 1, > year = accept.dt, race = "white"), jasa, cohort = FALSE, > ratetable = survexp.usr) > > > > ______________________________________________ > R-help at r-project.org 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.-- Peter Dalgaard Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
Dear Peter, Dear All, a further attempt led me to an answer. If I set options(stringsAsFactors=TRUE), which I usually have set to FALSE, no error occurs. I am, however not happy with this solution. Heinz Thank you, Peter after setting options(error=recover), see the output below, once for frame number 2, which I suspect to be the problem, once for frame number 1. Heinz > expect <- + survexp(futime ~ ratetable(age=(accept.dt - birth.dt), + sex=1,year=accept.dt,race="white"), + jasa, cohort=FALSE, + ratetable=survexp.usr) Error in floor(temp) : Non-numeric argument to mathematical function Enter a frame number, or 0 to exit 1: survexp(futime ~ ratetable(age = (accept.dt - birth.dt), sex = 1, year = ac 2: match.ratetable(rdata, ratetable) Selection: 2 Called from: top level Browse[1]> temp [1] "white" "white" "white" "white" "white" "white" "white" "white" "white" [10] "white" "white" "white" "white" "white" "white" "white" "white" "white" [19] "white" "white" "white" "white" "white" "white" "white" "white" "white" [28] "white" "white" "white" "white" "white" "white" "white" "white" "white" [37] "white" "white" "white" "white" "white" "white" "white" "white" "white" [46] "white" "white" "white" "white" "white" "white" "white" "white" "white" [55] "white" "white" "white" "white" "white" "white" "white" "white" "white" [64] "white" "white" "white" "white" "white" "white" "white" "white" "white" [73] "white" "white" "white" "white" "white" "white" "white" "white" "white" [82] "white" "white" "white" "white" "white" "white" "white" "white" "white" [91] "white" "white" "white" "white" "white" "white" "white" "white" "white" [100] "white" "white" "white" "white" Browse[1]> Q > There is also 'temp' in frame number 1. > expect <- + survexp(futime ~ ratetable(age=(accept.dt - birth.dt), + sex=1,year=accept.dt,race="white"), + jasa, cohort=FALSE, + ratetable=survexp.usr) Error in floor(temp) : Non-numeric argument to mathematical function Enter a frame number, or 0 to exit 1: survexp(futime ~ ratetable(age = (accept.dt - birth.dt), sex = 1, year = ac 2: match.ratetable(rdata, ratetable) Selection: 1 Called from: top level Browse[1]> temp [1] 49 5 15 38 17 2 674 39 84 57 152 7 80 1386 0 [16] 307 35 42 36 27 1031 50 732 218 1799 1400 262 71 34 851 [31] 76 1586 1571 11 99 65 4 52 1407 1321 1 44 995 8 1141 [46] 979 284 101 187 60 941 148 342 915 67 68 841 583 77 31 [61] 669 29 619 595 89 16 544 20 514 95 481 444 427 79 333 [76] 396 109 369 206 185 339 264 164 179 130 108 30 10 Browse[1]> Q At 31.12.2010 13:46 +0100, peter dalgaard wrote:>On Dec 31, 2010, at 10:21 , Heinz Tuechler wrote: > > > Dear All, > > > > reposting, because I did not find a solution, maybe someone could > check the example below. > > > > It's taken from the help page of survdiff. Executing it, gives the error > > > > "Error in floor(temp) : Non-numeric argument to mathematical function" > >Hmm, it's not happening to me (Mac OSX) either with 2.12.1 or the >current R-patched (r53892). Could be a platform issue (sounds >unlikely), a local user issue, or a locale one. > >Could you set options(error=recover) and find out what is the value >of "temp" when the error occurs? > > > > > best regards, > > > > Heinz > > > > library(survival) > > > > ## Example from help page of survdiff > > ## Expected survival for heart transplant patients based on > > ## US mortality tables > > expect <- > > survexp(futime ~ ratetable(age=(accept.dt - birth.dt), > > sex=1,year=accept.dt,race="white"), > > jasa, cohort=FALSE, > > ratetable=survexp.usr) > > > > Error in floor(temp) : Non-numeric argument to mathematical function > > > > sessionInfo('survival') > > > > R version 2.12.1 Patched (2010-12-18 r53869) > > Platform: i386-pc-mingw32/i386 (32-bit) > > > > locale: > > [1] LC_COLLATE=German_Switzerland.1252 LC_CTYPE=German_Switzerland.1252 > > [3] LC_MONETARY=German_Switzerland.1252 LC_NUMERIC=C > > [5] LC_TIME=German_Switzerland.1252 > > > > attached base packages: > > character(0) > > > > other attached packages: > > [1] survival_2.36-2 > > > > loaded via a namespace (and not attached): > > [1] base_2.12.1 graphics_2.12.1 grDevices_2.12.1 methods_2.12.1 > > [5] splines_2.12.1 stats_2.12.1 tools_2.12.1 utils_2.12.1 > > > traceback() > > 2: match.ratetable(rdata, ratetable) > > 1: survexp(futime ~ ratetable(age = (accept.dt - birth.dt), sex = 1, > > year = accept.dt, race = "white"), jasa, cohort = FALSE, > > ratetable = survexp.usr) > > > > > > > ______________________________________________ > > R-help at r-project.org 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. > >-- >Peter Dalgaard >Center for Statistics, Copenhagen Business School >Solbjerg Plads 3, 2000 Frederiksberg, Denmark >Phone: (+45)38153501 >Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
Follow up: The critical line seems to be in survexp around line 97 rdata <- data.frame(eval(rcall, m)) If changed to: old.stringsAsFactors <- options()$stringsAsFactors options(stringsAsFactors=TRUE) rdata <- data.frame(eval(rcall, m)) ### <- seems to be critical options(stringsAsFactors=old.stringsAsFactors) it seems to work. Heinz At 31.12.2010 15:53 +0100, Heinz Tuechler wrote:>Dear Peter, Dear All, > >a further attempt led me to an answer. If I set >options(stringsAsFactors=TRUE), which I usually have set to FALSE, >no error occurs. >I am, however not happy with this solution. > >Heinz > >Thank you, Peter > >after setting options(error=recover), see the output below, once for >frame number 2, which I suspect to be the problem, once for frame number 1. > >Heinz > > > expect <- >+ survexp(futime ~ ratetable(age=(accept.dt - birth.dt), >+ sex=1,year=accept.dt,race="white"), >+ jasa, cohort=FALSE, >+ ratetable=survexp.usr) >Error in floor(temp) : Non-numeric argument to mathematical function > >Enter a frame number, or 0 to exit > >1: survexp(futime ~ ratetable(age = (accept.dt - birth.dt), sex = 1, year = ac >2: match.ratetable(rdata, ratetable) > >Selection: 2 >Called from: top level >Browse[1]> temp > [1] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [10] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [19] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [28] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [37] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [46] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [55] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [64] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [73] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [82] "white" "white" "white" "white" "white" "white" "white" "white" "white" > [91] "white" "white" "white" "white" "white" "white" "white" "white" "white" >[100] "white" "white" "white" "white" >Browse[1]> Q > > > >There is also 'temp' in frame number 1. > > > expect <- >+ survexp(futime ~ ratetable(age=(accept.dt - birth.dt), >+ sex=1,year=accept.dt,race="white"), >+ jasa, cohort=FALSE, >+ ratetable=survexp.usr) >Error in floor(temp) : Non-numeric argument to mathematical function > >Enter a frame number, or 0 to exit > >1: survexp(futime ~ ratetable(age = (accept.dt - birth.dt), sex = 1, year = ac >2: match.ratetable(rdata, ratetable) > >Selection: 1 >Called from: top level >Browse[1]> temp > [1] 49 5 15 38 17 2 674 39 84 57 152 7 > 80 1386 0 >[16] 307 35 42 36 27 1031 50 732 218 1799 >1400 262 71 34 851 >[31] 76 1586 1571 11 99 65 4 52 1407 >1321 1 44 995 8 1141 >[46] 979 284 101 187 60 941 148 342 915 67 68 841 >583 77 31 >[61] 669 29 619 595 89 16 544 20 514 95 481 444 >427 79 333 >[76] 396 109 369 206 185 339 264 164 179 130 108 30 10 >Browse[1]> Q > > > >At 31.12.2010 13:46 +0100, peter dalgaard wrote: > >>On Dec 31, 2010, at 10:21 , Heinz Tuechler wrote: >> >> > Dear All, >> > >> > reposting, because I did not find a solution, maybe someone >> could check the example below. >> > >> > It's taken from the help page of survdiff. Executing it, gives the error >> > >> > "Error in floor(temp) : Non-numeric argument to mathematical function" >> >>Hmm, it's not happening to me (Mac OSX) either with 2.12.1 or the >>current R-patched (r53892). Could be a platform issue (sounds >>unlikely), a local user issue, or a locale one. >> >>Could you set options(error=recover) and find out what is the value >>of "temp" when the error occurs? >> >> > >> > best regards, >> > >> > Heinz >> > >> > library(survival) >> > >> > ## Example from help page of survdiff >> > ## Expected survival for heart transplant patients based on >> > ## US mortality tables >> > expect <- >> > survexp(futime ~ ratetable(age=(accept.dt - birth.dt), >> > sex=1,year=accept.dt,race="white"), >> > jasa, cohort=FALSE, >> > ratetable=survexp.usr) >> > >> > Error in floor(temp) : Non-numeric argument to mathematical function >> > >> > sessionInfo('survival') >> > >> > R version 2.12.1 Patched (2010-12-18 r53869) >> > Platform: i386-pc-mingw32/i386 (32-bit) >> > >> > locale: >> > [1] LC_COLLATE=German_Switzerland.1252 LC_CTYPE=German_Switzerland.1252 >> > [3] LC_MONETARY=German_Switzerland.1252 LC_NUMERIC=C >> > [5] LC_TIME=German_Switzerland.1252 >> > >> > attached base packages: >> > character(0) >> > >> > other attached packages: >> > [1] survival_2.36-2 >> > >> > loaded via a namespace (and not attached): >> > [1] base_2.12.1 graphics_2.12.1 grDevices_2.12.1 methods_2.12.1 >> > [5] splines_2.12.1 stats_2.12.1 tools_2.12.1 utils_2.12.1 >> > > traceback() >> > 2: match.ratetable(rdata, ratetable) >> > 1: survexp(futime ~ ratetable(age = (accept.dt - birth.dt), sex = 1, >> > year = accept.dt, race = "white"), jasa, cohort = FALSE, >> > ratetable = survexp.usr) >> > > >> > >> > ______________________________________________ >> > R-help at r-project.org 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. >> >>-- >>Peter Dalgaard >>Center for Statistics, Copenhagen Business School >>Solbjerg Plads 3, 2000 Frederiksberg, Denmark >>Phone: (+45)38153501 >>Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com