Hello,

I am reposting my question with a reproducible example/minimal dataset (6 rows) 
this time.

I have written a user-defined function (myFunc below) with ten arguments. When 
calling the function, I get the following message: �Error: wrong result size 
(0), expected 2 or 1�.
I am not getting the desired output dataset that will have 2 rows. How would I 
resolve the issue?   Any hints would be appreciated.


These results are from the following code chunk  outside myFunc:

addmargins(table(xanloid_set$cohort_type))



NMPR_Cohort  OID_Cohort       Other         Sum
          2           1           3           6

.

Thanks,

Pradip Muhuri





# myFunc_rev.R
setwd ("H:/R/cis_data")
library(dplyr)
rm(list = ls())
# data object - description
temp <- "id  intdate anldate oiddate herdate cohort_type
1     2004-11-04 2002-07-18 2001-07-07 2003-11-03  NMPR_Cohort
2     2004-10-24         NA 2002-10-13 NA          OID_Cohort
3     2004-10-10         NA         NA NA          Other
4     2004-09-01 1999-08-10         NA 2002-11-04  NMPR_Cohort
5     2004-09-04 1997-10-05         NA NA          Other
6     2004-10-25         NA         NA 2011-11-04  Other"
# read the data object
xanloid_set <- read.table(textConnection(temp),
                           colClasses=c("character", "Date", "Date", "Date", 
"Date", "character"),
                           header=TRUE, as.is=TRUE
)
# print the data object
xanloid_set
# Define user-defined function
myFunc <- function (newdata,
                    oridata,
                    cohort,
                    value,
                    xdate_to_int_time,
                    xflag,
                    idate,
                    xdate,
                    xdate_to_int_time_cat,
                    year) {

                    newdata  <-    filter (oridata, cohort== value ) %>%
                                   mutate(xdate_to_int_time = ifelse(xflag==1, 
(idate-xdate)/365.25, NA),
                                   xdate_to_int_time_cat = 
cut(xdate_to_int_time, breaks=c(0,1,2,3,4,5,6,7),
                                                                 
include.lowest=TRUE, stringsAsFactors = FALSE) )
                    addmargins(with(newdata, table(year, xdate_to_int_time_cat, 
na.rm=TRUE)))
                                            }
# invoke user defined function
myFunc (  newdata=nmpr_nmproid,
        oridata=xanloid_set,
        cohort=xanloid_set$cohort_type,
        value= "NMPR_Cohort",
        xdate_to_int_time=anl_to_int_time,
        xflag=xanloid_set$anlflag,
        idate=xanloid_set$intdate,
        xdate=xanloid_set$anldate,
        xdate_to_int_time_cat=xanloid_set$anl_to_int_time_cat,
        year=xanloid_set$xyear
        )
# tabulate cohort_type
  addmargins(table(xanloid_set$cohort_type))



        [[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.

Reply via email to