library(RWebServices)
func <- function( response, predictor ) {
if ( is.character( predictor ))
return( oneWayAnova( response, as.factor( predictor )))
formula <- as.formula( substitute( response ~ predictor ))
result <- lm( formula )
anova( result )
}
## this indirection makes it easier to apply typeInfo
oneWayAnova <- func
typeInfo(oneWayAnova) <-
SimultaneousTypeSpecification(
TypedSignature(
response = "numeric",
predictor = "factor"),
returnType = "anova" )
typeInfo2Java(oneWayAnova)
oneWayAnova <- func
typeInfo(oneWayAnova) <-
SimultaneousTypeSpecification(
TypedSignature(
response = "numeric",
predictor = "factor"),
TypedSignature(
response = "numeric",
predictor = "character"),
returnType = "anova" )
typeInfo2Java(oneWayAnova)
oneWayAnova <- func
typeInfo(oneWayAnova) <-
IndependentTypeSpecification(
response = c("numeric"),
predictor = c( "factor", "character", "numeric" ),
returnType = "anova"
)
typeInfo2Java(oneWayAnova)
oneWayAnova <- func
typeInfo(oneWayAnova) <-
SimultaneousTypeSpecification(
TypedSignature(
response = "numeric",
predictor = "factor",
returnType = "matrix"),
TypedSignature(
response = "numeric",
predictor = "character"),
returnType = "anova" )
typeInfo2Java(oneWayAnova)
oneWayAnova <- func
typeInfo(oneWayAnova) <-
IndependentTypeSpecification(
response = c("numeric"),
predictor = c( "factor", "character", "numeric" ),
returnType = c("anova")
)
typeInfo2Java(oneWayAnova)
# Warning about StrictIsTypeTest
oneWayAnova <- func
typeInfo(oneWayAnova) <-
IndependentTypeSpecification(
response = StrictIsTypeTest("numeric"),
predictor = c( "factor", "character", "numeric" ),
returnType = c("anova")
)
typeInfo2Java(oneWayAnova)
oneWayAnova <- func
typeInfo(oneWayAnova) <-
IndependentTypeSpecification(
response = "numeric",
predictor = quote( ( length(predictor) == length(response)) && is( predictor, "factor" )),
returnType = c("anova")
)
typeInfo2Java(oneWayAnova)
Run the code above in your browser using DataLab