Learn how to define an own function to eliminate repetition from code and allows code reuse.

Functions allow you to automate common tasks avoid copying and pasting. To create a new function you need to pick a name for the function, list the inputs or arguments and place the code you have developed in the body of the function.

Basic function template: name and body

```
#Functions
my_function <- function(arg1, arg2){
#Do something
}
```

Function template with defaults arguments

```
my_function <- function(arg1, arg2, detail_arg = default1){
#Do something
}
```

Example: function to estimate Z - Gas compressibility factor using Papay correlation

In this case two arguments are difined, pseudoreduced pressure and pseudoreduced temperature. The function is called z.papay and in its body is the equation. At the end we define the value that will be return as result.

\[ z = 1-\frac{3.53p_{pr}}{10^{0.9813T_{pr}}}+\frac{0.274p_{pr}^2}{10^{0.8157T_{pr}}}\]

```
z.papay <- function(Ppr, Tpr){
#Ppr <- 3
#Tpr <- 2
z <- 1-(3.53*Ppr)/(10^(0.9813*Tpr))+(0.274*Ppr^2)/(10^(0.8157*Tpr))
return(z)
}
```

Once the function is in the environment, we can use it to calculate Z value.

```
z.estimate <- z.papay(3, 2)
z.estimate
```

`[1] 0.9421987`

Bacause a vector is the simplest type of data structure in R, we can use a vector as a parameter in functions. A pseudoreduced pressure vector is defined to calculate z factor to constant pseudoreduced temperature

```
library(ggplot2)
Ppr <- seq(from = 0, to = 8, by = 0.2)
Tpr <- 1.6
Tpr2 <- 1.3
z_cal <- z.papay(Ppr, Tpr)
z_cal2 <- z.papay(Ppr, Tpr2)
z.value <- data.frame(Ppr = Ppr, z = z_cal, z2 = z_cal2)
plot_x <- ggplot(z.value) +
geom_line(aes(x = Ppr, y = z), col = "red") +
geom_line(aes(x = Ppr, y = z2), col = "blue")
plot_x
```

For attribution, please cite this work as

Vazquez (2021, Nov. 3). Chato Solutions: Define Functions in R. Retrieved from https://www.chatosolutions.com/posts/2021-11-03-function1/

BibTeX citation

@misc{vazquez2021define, author = {Vazquez, Rigoberto Chandomi}, title = {Chato Solutions: Define Functions in R}, url = {https://www.chatosolutions.com/posts/2021-11-03-function1/}, year = {2021} }