# General ```{toctree} :hidden: True self environments packages ``` ## Function setting default inputs If default input is different to the input name, you won't have an issue. If it's the same you'll have an error. ``` # Fine: x <- function(T = 1){} # Problem: x <- function(T = T){} ``` In that case, you can resolve this by doing... ``` x <- function(T = parent.frame()$T) ``` ## Function returning multiple objects In python, you can return multiple objects as follows: ``` def fun(): str = "example" x = 20 return str, x; # Return tuple, we could also write (str, x) str_1, x_1 = fun() # Assign returned tuple print(str_1) print(x_1) ``` This is not possible in R. Instead, a good work around is: ``` fun <- function(suffix) { str <- "example" x <- 20 return_names <- c("str", "x") return_objects <- mget(return_names) return_new_names <- paste0(return_names, "_", suffix) return(list(return_new_names, return_objects)) } output <- fun("1") for (i in seq_along(output[[1]])){ assign(output[[1]][i], output[[2]][i]) } ``` ## Linting ``` install.packages("lintr") library(lintr) lint("filename.R") ```