[R] function completing properly

Jim Lemon jim at bitwrit.com.au
Thu Jul 10 13:50:19 CEST 2014

On Wed, 9 Jul 2014 04:47:39 PM Janet Choate wrote:
> Hi R community,
> i created a function (mkdate) as follows:
> mkdate = function(x) {
> x$date = as.Date(paste(x$year, x$month, x$day, sep="-"))
> x$wy = ifelse(x$month >=10, x$year+1, x$year)
> x$yd = as.integer(format(as.Date(x$date), format="%j"))
> x$wyd = cal.wyd(x)
> x
> }
> the function results in adding the new columns date, wy, yd, and 
wyd to the
> table i apply it to.
> this has always worked in R version 2.14.2.
> however, in R version 3.1.0 - instead of my mkdate function adding 
> columns to my existing table, it just overwrites my table and leaves 
> with just a list of the last variable created by my mkdate function. so 
> end up with just a list of numbers representing wyd, and lose all the 
> in my original table.
> does anyone know what would now be causing this to occur, and 
what i need
> to do to make my function work properly again?
> thank you for any assistance,
> Janet
> 	[[alternative HTML version deleted]]
> ______________________________________________
> R-help at r-project.org mailing list
> 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 
Hi Janet,
It looks to me as though x should be at least a three column list 
containing a year, month and day in numeric format. You then add 
four other fields to it and return the resulting (at least) seven column 
list. What you may have been doing was to pass your entire data 
frame (?) to the function with one or more incomplete rows, 
whereupon the function would calculate the four fields for all the rows 
and fill in the incomplete rows. This is not a very efficient way to do this 
and you should probably consider just passing the new values and 
appending the object returned to your data frame.


More information about the R-help mailing list