# [R] Adding numbers in Outputs

Peter Ehlers ehlers at ucalgary.ca
Fri Dec 10 14:50:56 CET 2010

```On 2010-12-10 02:41, Amelia Vettori wrote:
> two OutputsHello!
>
> I am Amelia from Auckland and work for a bank. I am new to R and I have started my venture with R just a couple of weeks back and this is my first mail to R-forum. I need following assistance
>
> Suppose my R code generates following outputs as
>
>
>> X
> []
>  40
>
> []
>  80    160
>
> []
>  160   80  400
>
>
>> Y
>
> []
>
>  10
>
>
>
> []
>
>  10    30
>
>
>
> []
>
>  5  18  20
>
> and suppose
>
> Z = c(1, 2, 3)
>
> I need to perform the calculation where I will be multiplying corresponding terms of X and Y individually and multiplying their sum by Z and store these results in a dataframe.
>
> I.e. I need to calculate
>
> (40*10) * 1                                 # (first element of X + First element of Y) * Z = 400
>
> ((80*10)+(160*30)) * 2                 # 2 row of X and 2nd row of Y = 11200
>
> ((160*5)+(80*18)+(400*20)) * 3     # 3rd row of X and 3 row of Y and Z =  30720
>
>
>
> So the final output should be
>
> 400
> 11200
> 30720
>
>
> One way of doing it is write R code for individual rows and
>   arrive at the result e.g.
>
> ([[X]]*[[Y]])*1 will result in 400. However, I was just trying to know some smart way of doing it as there could be number of rows and writing code for each row will be a cumbersome job. So is there any better way to do it?
>
>

Why not just write a function to do what
you've done by hand:

f <- function(x, y, z){
len <- length(x)
res <- rep(NA, len)
for(i in 1:len){
res[i] <- sum(x[[i]] * y[[i]]) * z[i]
}
res
}

f(X, Y, Z)

Peter Ehlers

> I thank you in advance.
>
> Thanking
>   all
>
> Amelia
>

```