[R] Plotting a function that includes logical operators

Duncan Murdoch murdoch.duncan at gmail.com
Wed Jul 27 20:08:59 CEST 2011

On 27/07/2011 9:21 AM, dean123 wrote:
> Hi David,
> I am trying to define t as a single numeric value and not as a vector.. I
> want the function to realise that if I call test(t) and t is less than equal
> 10 return zero, if t greater than 10 return 2*t. Am i missing some code in
> which to define t a numeric value instead of a vector?
> Also, I thought that by defining test<- function(t) {...} I was defining t
> as the argument of the function?

The problem is that your function will be called with a vector of values 
for t (by plot(), or some function plot() calls).  This is very common 
in R, and if you want other functions to work well with yours, you 
should handle it.

A quick and dirty workaround is to define test as you did, then call

test2 <- Vectorize(test)

The Vectorize() function creates a new function which we name test2 that 
will call test() in a loop.  Usually you don't want to do this because 
it's not very efficient compared to many other solutions, but it's easy 
to do.

Duncan Murdoch

More information about the R-help mailing list