# How to Calculate the Scalar Product in R

Scalar product, sometimes known as the dot product, is an algebraic operation that returns a single integer from two numbers of equal length.

Let’s say we have two vectors x and y and we need to get the dot product of the two.

## Scalar Product

Given that,

x = [x1, x2, x3] When vector y = [y1, y2, y3], the dot product of vectors x and y, abbreviated as x.y, is calculated as follows:

x · y = x1 * y1 + x2 * y2 + x3 * y3

For example, if x = [12, 15, 16] and y = [14, 13, 12], then the dot product of x and y would be equal to:

x. y = 12*14 + 15*13 + 16*12

x·y = 168 + 195 + 192

x ·y = 555

The sum of the products of the corresponding entries in two vectors is the dot product/scalar product.

In R, how do you calculate the dot product?

In R, there are two simple techniques to calculate the dot product of two vectors.

### Approach 1: Use %*%

The following code demonstrates how to create the dot product between two vectors in R using the percent * percent function:

Let’s create a two vectors

```a <- c(12, 15, 16)
b <- c(14, 13, 12)```

Now we calculate the dot product between the above vectors

`a %*% b`
```    [,1]
[1,]  555```

The result of the dot product is 555.

This function is also applicable to data frame columns:

The above data we can assign to “data” as a data frame.

`data<- data.frame(a=c(12, 15, 16), b=c(14, 13, 12))`

To calculate the dot product between columns ‘a’ and ‘b’ of a data frame, we can use the same percent * percent function.

`data\$a %*% data\$b`
```     [,1]
[1,]   555```

### Approach 2: Use the dot() function

The dot() method from the pracma library can also be used to calculate the dot product between two vectors.

`library(pracma)`

We can use the same vectors mentioned in approach1.

```a <- c(12, 15, 16)
b <- c(14, 13, 12)```

Now we can calculate the dot product between vectors based on dot function.

`dot(a, b)`
`[1] 555`

The dot product of the two vectors comes out to be 555 once again.

### Approach 3: Use the dot() function

R provides a very efficient way of computing the dot product of two vectors. This may be accomplished by utilizing the dot() method from the geometry library.

Syntax: dot(x, y, d = NULL)

Parameters:

x: Matrix of vectors

y: Matrix of vectors

d: The dimension along which the dot product is calculated

`library(geometry)`
````dot(a, b, d = TRUE)`
[1] 555```

The answer is the same as in approaches 1 and 2.

### Approach 4: Use the sum() function

```a <- c(12, 15, 16)
b <- c(14, 13, 12)```
```sum(a*b)
[1] 555```

Yes, simple and powerful method.

### Approach 5: Use own function

Let’s create the function and calculate the dot product.

```mydot <- function(x, y){   # x and y can be vectors or matrices
result <- t(x)%*%y   # %*% is the matrix multiplication operator
print(result)        # t(x) denotes the transpose of x
}```
`mydot(a,b)`
```    [,1]
[1,]  555```

In all the approaches the answer is the same.

Binomial Distribution in R-Quick Guide »