(Newbie) Functions on vectors
Something like
Qs <- c("30/6", "30/9", "31/12", "31/3")
paste(Qs[quarter], year + (quarter==4), sep="")
(no trailing semicolons are necessary)
On Fri, 17 Feb 2006, Vivek Satsangi wrote:
Folks,
I want to make the following function more efficient, by vectorizing it:
getCriterionDecisionDate <- function (quarter , year)
{
if (length(quarter) != length(year)) stop ("Quarter and year vectors
of unequal length!");
ret <- character(0);
for (i in 1:length(quarter)) {
currQuarter <- quarter[i];
currYear <- year[i];
if ((currQuarter < 1) | (currQuarter > 4)) stop ("Invalid quarter!");
if ((currYear < 1986) | (currYear > 2004)) stop ("Invalid year!");
# If the criterion date is 1Q2004, then the reports were for periods
# ending in Feb, March and April 2004 and the decision date is July 1, 2004.
if (currQuarter == 1) {
ret <- c(ret,paste("06/30/",currYear,sep=""));
} else if (currQuarter == 2) {
ret <- c(ret,paste("09/30/",currYear,sep=""));
} else if (currQuarter == 3) {
ret <- c(ret,paste("12/31/",currYear,sep=""));
} else if (currQuarter == 4) {
ret <- c(ret,paste("3/31/",currYear+1,sep=""));
}
}
ret;
}
How can I make the 'if' statements work on vectors rather than using
one value at a time? (sorry, my copy of MASS is at home).
--
-- Vivek Satsangi
Student, Rochester, NY USA
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595