Ivo -- The "stopifnot" statement can be used to do this sort of check. For example, if you need to check that one of your arguments is a vector with length >= N, you can add
stopifnot(is.vector(myarg)) stopifnot(length(myarg) >= N) To the beginning of your function. This will throw an error if one of the conditions is not met. The rest of your conditions can be checked similarly. Hope this helps, Matt Wiener -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of ivo welch Sent: Friday, May 14, 2004 10:23 AM To: [EMAIL PROTECTED] Subject: [R] type checking --- just a thought hi: would it be useful to build into R an optional mechanism that typechecks arguments? for example, sum.across <- function ( inpmatrix : matrixtype( dim[1]>1, dim[2]>3 ) ) : vector { } # this would define a sum.across function that can take matrices or data sets, but not vectors, # and which indicates that it will return a vector. xsum <- sum.across( 1:10 ); # error repeat <- function( series : vector( dim>0 ), times : scalar( value>0 ) ) : vector; similarly, a common input error condition may be calling a function with a NULL vector, or with a vector with fewer than N observations. many statistical functions have such hard-wired limits. I know that "if" statements can do this, but this might make for a nice standardized language feature. on the other hand, the effort and complexity may not be worth the extra functionality. and one beg to the language maintainers for something that I hope is simple: in R 1.8.2, please add to the "source" function information where (file:linenumber) dies or ends. regards, /ivo ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
