[R] Compact sums in functions definitions

JeeBee JeeBee at troefpunt.nl
Thu Jun 15 20:13:34 CEST 2006



Slightly better:

h <- function(x) rowSums( as.matrix(1/x) %*% arr )


On Thu, 15 Jun 2006 19:41:12 +0200, JeeBee wrote:

> 
> Hi Alessandro,
> 
> The problem is that arr/x isn't quite doing what you
> thought it was.
> arr / x is something like
> c(arr[1] / x[1], arr[2] / x[2], arr[1] / x[3], ...)
> What I mean is, it divides arr[i] by x[i] and tries to lengthen
> arr by repeating itself (because it is shorter than x). It warns
> in case length(x) is not a multiple of length(arr).
> (or the other way around if arr was longer than x)
> 
> I made a nice one for you:
> g <- function(x) rowSums( t(t(1/x)) %*% arr )
> 
> It is likely someone else can do it much nicer (shorter),
> my R knowledge still has to be increased ...
> 
> JeeBee.
> 
> 
> On Thu, 15 Jun 2006 18:55:15 +0200, Alessandro Antonucci wrote:
> 
>> I'm trying to make more compact the definition
>> of a function as for example:
>> 
>> f <- function(x) 2/x+3/x
>> 
>> by simply defining the array of coefficients
>> 
>> arr = c(2,3)
>> 
>> and setting:
>> 
>> g <- function(x) sum((arr/x))
>> 
>> Everything seems to work fine because the values returned 
>> by f and g result coincident for different values of their
>> argument, but when I try to plot the function g using:
>> 
>> x = seq(-1,1,.01)
>> plot(x,g(x))
>> 
>> I receive the errors/warnings:
>> 
>>>Error in xy.coords(x, y, xlabel, ylabel, log) : 
>>>        'x' and 'y' lengths differ
>>>In addition: Warning message:
>>>longer object length
>>>        is not a multiple of shorter object length in: b/t 
>>>Execution halted
>> 
>> Any idea about that?
>> 
>> Thanks.
>> 
>> Alessandro
> 
> ______________________________________________
> 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



More information about the R-help mailing list