# Custom R Script

### Add your own custom R functions or variables with R Script

You might want to use your own R functions as part of your data wrangling steps. This is an introduction for such case. If you want to write your own R functions to extract data, please refer to [Write R Script for Data](/data_import/r-script-data.md).

You can write your functions in an R script and register it to your project, then you can start calling the functions just like any other functions.

### Example - **alpha** function from **psych** package

This is an example to use alpha function from [psych](https://cran.r-project.org/web/packages/psych/) R package from Exploratory Desktop.

#### Install Required Package

In this example, psych is already installed as a default dependency package but the function you want to use might be from a package that we don't install as default. In that case, please install the package following this instruction.

[Install R Package](/extend-with-r/r_package.md)

#### Add R Script

Create a new R script from the left tree.

![](/files/-M4oNF76vQRAa4_mL2kR)

#### Define the Function

Define a function. Please note that the first argument is data frame and the output is also data frame, so that it can be used from command line.

```r
get_alpha <- function(df, attr = "total", ...){
  num_df <- df %>%
    dplyr::select_if(is.numeric)

  # class of first arg in psych::alpha must be only data.frame class
  class(num_df) <- "data.frame"

  alpha_obj <- psych::alpha(num_df, ...)
  alpha_obj[[attr]]
}
```

Then, click "Save" button.

![](/files/-M4oNF7LUClm7H1S0XKw)

#### Use It as a Command

You can use the function from a data frame you want to apply. Click 'Add' (Plus) button and click "Custom Command".

![](/files/-M4oNF7Nf8OLKiH4X91W)

Then you can enter the function in the command line.

![](/files/-M4oNF7Wyg89my1tLQDz)

#### Step-by-step

Here is a blog post that walk you through how to register the R script and use the functions.

* [Adding Custom R Scripts to Extend Exploratory Desktop](https://blog.exploratory.io/adding-custom-r-scripts-to-extend-exploratory-desktop-a054832b9562#.68ny44np1)
* [Calculating distances between two locations with geosphere package](https://blog.exploratory.io/calculating-distances-between-two-geo-coded-locations-358e65fcafae)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.exploratory.io/extend-with-r/r_script.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
