# 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 )
Note that some of your arguments are NULL because xanloid_set does not contain components by the given name. E.g., xanloid_set$anlflag is NULL because there is no column called 'anlflag' in xanloid_set. The NULL's will cause various problems downstream. You can avoid this problem by using the syntax xanloid_set[ , "anlflag"] which will give an error if the requested column does not exist. Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, May 1, 2015 at 9:13 PM, Muhuri, Pradip (SAMHSA/CBHSQ) < pradip.muh...@samhsa.hhs.gov> wrote: > 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. > [[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.