[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