OpasnetUtils/Ops

From Testiwiki
Revision as of 20:30, 1 July 2012 by Jouni (talk | contribs) (Code: comments added)
Jump to: navigation, search



Description

Arithmetic operations of ovariables: first they are merged by index columns, then the operation is performed for the Result.x and Result.y columns.

If one of the expressions is numeric, it is first transformed to ovariable.

Code

# : You cannot use code "callGeneric(e2, e1)" with other order than original, because some functions like "/" and "-" cannot be reordered. --Jouni 23:30, 1 July 2012 (EEST)

- Hide code

# SETMETHOD OPS ######### Arithmetic operations of ovariables: first they are merged by index columns,
### then the operation is performed for the Result.x and Result.y columns.
### If one of the expressions is numeric, it is first transformed to ovariable.
temp <- setMethod(
	f = "Ops", 
	signature = signature(e1 = "ovariable", e2 = "ovariable"), 
	definition = function(e1, e2) {
		out <- merge(e1, e2)@output
		colnames(out) <- gsub(".x", "", colnames(out))
		out$Result <- callGeneric(out$Result, out$Result.y)
		if(!is.null(out$Unit.y)) {out$Unit <- paste(out$Unit, "|(", out$Unit.y, ")", sep= "")}
		e1@output <- out[, !colnames(out) %in% c("Result.y", "Unit.y")]
		return(e1)
	}
)

temp <- setMethod(
	f = "Ops", 
	signature = signature(e1 = "ovariable", e2 = "numeric"), 
	definition = function(e1, e2) {
		e2 <- make.ovariable(e2)
		e1 <- callGeneric(e1, e2)
		return(e1)
	}
)

temp <- setMethod(
	f = "Ops", 
	signature = signature(e1 = "numeric", e2 = "ovariable"), 
	definition = function(e1, e2) {
		e1 <- make.ovariable(e1)
		e1 <- callGeneric(e2, e1)
		return(e1)
	}
)

See also