This is the begining of a cheat sheet!

By Johanie Fournier, agr. in rstats

October 12, 2023

I can spend a ridiculously big amount of time looking for a certain peace of code that I made few months ago that will solve my current coding problem but can’t remember how to code…

So instead of loosing my time in my archive files or on Google, I decide to start listing here all the snippet of code that I need on hand.

One of this day, I will organize all this into a beautiful cheat sheet, but for now there my little list!

Geospatial

CRS

I need to remember that in the coordinate reference system (CRS) of Quebec:

  • WGS84:EPSG4326 is a geographic reference system meaning with longitude and latitude values in degree.
  • NAD83:EPSG3978 is a projected reference system with longitude and latitude values in meter. Better for any kind of calculation

Transform datable to sf object

sf::st_as_sf(.) %>%
  sf::st_transform(., 3978)

Add a buffer distance around points

sf::st_buffer(dist = 20)

Get coordinate from a sf object

mutate(
  longitude = sf::st_coordinates(.)[, 1],
  latitude = sf::st_coordinates(.)[, 2]
)

Markdown in R

date: "`r format(Sys.time(), '%Y-%m-%d')`"

<script src="https://hypothes.is/embed.js" async></script>

Setup

knitr::opts_chunk$set(
  include = TRUE, # TRUE = run and include the chunk in document
  echo = FALSE, # FALSE = not display the code
  eval = TRUE, # FALSE = not run the code in all chunk
  comment = FALSE,
  message = FALSE,
  warning = FALSE
)

Theme Map

theme_map <- function(base_size=9, base_family="") { # 3
	require(grid)
	theme_bw(base_size=base_size, base_family=base_family) %+replace%
		theme(axis.line=element_blank(),
			  axis.text=element_blank(),
			  axis.ticks=element_blank(),
			  axis.title=element_blank(),
			  panel.background=element_blank(),
			  panel.border=element_blank(),
			  panel.grid=element_blank(),
			  panel.spacing=unit(0, "lines"),
			  plot.background=element_blank(),
			  legend.justification = c(0,0),
			  legend.position = c(0,0),
			  plot.title= element_text(size=20, hjust=0, color="black", face="bold"),
		)

emo::ji!

`r emo::ji("collision")`

`r emo::ji("popper")`

`r emo::ji("bomb")`

`r emo::ji("bug")`

`r emo::ji("chart")`

`r emo::ji("cry")`

`r emo::ji("disaster")`

`r emo::ji("fear")`

`r emo::ji("chart")`

`r emo::ji("flowers")`

`r emo::ji("laugh")`

Parallel Processing

Start

doFuture::registerDoFuture()
n_cores <- parallel::detectCores() - 1
future::plan(
  strategy = future::cluster,
  workers = parallel::makeCluster(n_cores)
)

Stop

future::plan(future::sequential)

Tidyverse data manipulation

Replace Inf with NA

df %>%
  mutate_if(is.numeric, list(~ na_if(., Inf))) %>%
  mutate_if(is.numeric, list(~ na_if(., -Inf)))
df %>%
  mutate_at(vars(auc_evi), ~ na_if(., Inf))

Rename in a loop

lookup <- c(new_name = "old_name")

df %>%
  rename(any_of(lookup))

Remove cap and accent

df %>%
  mutate(new_name = tolower(stringi::stri_trans_general(old_name, "Latin-ASCII")))

Read all rds file in folder

data <- list.files(path = "path_to_files", pattern = ".rds", full.names = T) %>%
  map_dfr(readRDS) %>%
  bind_rows()

Corrrelation Funnel

library(correlationfunnel)

var <- "name_of_interest_variable"

var_select <- tbl_prep %>%
  select(var) %>%
  binarize() %>%
  select(starts_with(var) & ends_with("_Inf")) %>%
  names()

tbl_prep %>%
  binarize() %>%
  correlate(var_select) %>%
  plot_correlation_funnel() +
  labs(title = paste0(label, " - Correlation Funnel"))
Posted on:
October 12, 2023
Length:
2 minute read, 404 words
Categories:
rstats
Tags:
rstats
See Also:
Predicting MO with H2O Models from IRDA data
IRDA soil data
This is a new begining!