[R] R Error: wrong result size (...), expected ... or 1 (minimal example provided)

Muhuri, Pradip (SAMHSA/CBHSQ) Pradip.Muhuri at samhsa.hhs.gov
Sat May 2 06:13:05 CEST 2015


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]]



More information about the R-help mailing list