
R Under development (unstable) (2024-02-06 r85866) -- "Unsuffered Consequences"
Copyright (C) 2024 The R Foundation for Statistical Computing
Platform: aarch64-unknown-linux-gnu

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> options(na.action=na.exclude) # preserve missings
> options(contrasts=c('contr.treatment', 'contr.poly')) #ensure constrast type
> library(survival)
> 
> #
> # Generate each of the messages from is.ratetable
> #
> mdy.date <- function(m, d, y) {
+     y <- ifelse(y<100, y+1900, y)
+     as.Date(paste(m,d,y, sep='/'), "%m/%d/%Y")
+     }
> temp <- runif(21*2*4)
> 
> # Good
> attributes(temp) <- list(dim=c(21,2,4),
+     dimnames=list(c(as.character(75:95)), c("male","female"),
+                   c(as.character(2000:2003))),
+     dimid=c("age","sex","year"),
+     type=c(2,1,4),
+     cutpoints=list(c(75:95), NULL, mdy.date(1,1,2000) +c(0:3)*366.25),
+     class='ratetable')
> is.ratetable(temp)
[1] TRUE
> 
> # Factor problem + cutpoints length
> attributes(temp) <- list(dim=c(21,2,4),
+     dimnames=list(c(as.character(75:95)), c("male","female"),
+                   c(as.character(2000:2003))),
+     dimid=c("age","sex","year"),
+     type=c(1,1,2),
+     cutpoints=list(c(75:95), NULL, mdy.date(1,1,2000) +c(0:4)*366.25),
+     class='ratetable')
> is.ratetable(temp, verbose=T)
[1] "type[3] is numeric or factor but the cutpoint is a date" 
[2] "attribute type[1] is continuous; cutpoint should be null"
[3] "wrong length for cutpoints 3"                            
>  
>                     
> # missing dimid attribute + unsorted cutpoint
> attributes(temp) <- list(dim=c(21,2,4),
+     dimnames=list(c(as.character(75:95)), c("male","female"),
+                   c(as.character(2000:2003))),
+     type=c(2,1,3),
+     cutpoints=list(c(75:95), NULL, mdy.date(1,1,2000) +c(4:1)*366.25),
+     class='ratetable')
> is.ratetable(temp, verbose=T)
[1] "wrong length for dimid, or dimnames do not have names"
[2] "unsorted cutpoints for dimension 3"                   
> 
> # wrong length for dimid and type, illegal type
> attributes(temp) <- list(dim=c(21,2,4),
+     dimnames=list(c(as.character(75:95)), c("male","female"),
+                   c(as.character(2000:2003))),
+     dimid=c("age","sex","year", "zed"),
+     type=c(2,1,3,6),
+     cutpoints=list(c(75:95), NULL, mdy.date(1,1,2000) +c(0:3)*366.25),
+     class='ratetable')
> is.ratetable(temp, verbose=T)
[1] "wrong length for dimid, or dimnames do not have names"
[2] "type attribute must be 1, 2, 3, or 4"                 
[3] "wrong length for type attribute"                      
> 
> 
> # Print and summary
> print(survexp.us[1:20,,c('1953', '1985')] )
Rate table with dimension(s): age sex year 
, , year = 1953

    sex
age          male       female
  0  8.936600e-05 6.911204e-05
  1  6.169963e-06 5.423669e-06
  2  3.860391e-06 3.161334e-06
  3  2.909162e-06 2.424089e-06
  4  2.448747e-06 1.950051e-06
  5  2.210350e-06 1.692520e-06
  6  1.988411e-06 1.481583e-06
  7  1.813065e-06 1.298053e-06
  8  1.684303e-06 1.169315e-06
  9  1.593900e-06 1.087146e-06
  10 1.569249e-06 1.051541e-06
  11 1.626780e-06 1.043325e-06
  12 1.771975e-06 1.089887e-06
  13 2.062389e-06 1.199447e-06
  14 2.462443e-06 1.347361e-06
  15 2.944779e-06 1.550072e-06
  16 3.410754e-06 1.752797e-06
  17 3.819231e-06 1.928140e-06
  18 4.164702e-06 2.056914e-06
  19 4.504735e-06 2.169256e-06

, , year = 1985

    sex
age          male       female
  0  3.350073e-05 2.680036e-05
  1  2.451492e-06 2.108968e-06
  2  1.739100e-06 1.341882e-06
  3  1.369277e-06 1.013196e-06
  4  1.122754e-06 7.940941e-07
  5  9.995021e-07 7.530142e-07
  6  9.173378e-07 6.571643e-07
  7  8.488687e-07 5.887021e-07
  8  7.530153e-07 5.339338e-07
  9  6.297793e-07 4.791661e-07
  10 5.202416e-07 4.517830e-07
  11 5.202416e-07 4.517830e-07
  12 7.530134e-07 5.202412e-07
  13 1.232311e-06 6.571636e-07
  14 1.862374e-06 8.351727e-07
  15 2.533686e-06 1.026887e-06
  16 3.150341e-06 1.204921e-06
  17 3.657474e-06 1.341877e-06
  18 4.041315e-06 1.424054e-06
  19 4.315527e-06 1.465144e-06

> summary(survexp.usr)
 Rate table with 4 dimensions:
	age ranges from 0 to 39812.25; with 110 categories
	sex has levels of: male female
	race has levels of: white black
	year ranges from 1940-01-01 to 2020-01-01; with 81 categories
> 
> proc.time()
   user  system elapsed 
  0.418   0.029   0.442 
