18 General
18.1 Comparing two dataframes
waldo::compare(df1, df2)
18.2 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)
18.3 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])
}
18.4 Linting
install.packages("lintr")
library(lintr)
lint("filename.R")
lintr::lint_dir("foldername")
lintr::lint_package()