MyNixOS website logo
Description

A Ternary Conditional Operator for R.

A small language extension for succinct conditional assignment using `?` and `:`, emulating the conditional ternary operator syntax using in C, Java, JavaScript and other languages.

rtern

R-CMD-check Codecov test coverage

Overview

rtern brings a conditional ternary operator using ? and : to R.

This groundbreaking spoonful of syntactic sugar will supercharge your workflow and see you bubble to the top of Kaggle leaderboards.

Yes, we know that it is possible to perform conditional assignment in base R multiple ways:

# Using a one-line if/else:
x <- if (y > 1) 1 else 2
# vectorized form:
x <- ifelse(y > 1, 1, 2)

However we're sure you'll agree that once you can do the same using only...

x <- y > 1 ? 1 : 2

...your models will converge faster, ROC AUC will approach 1 and Hadley Wickham will be starring your repos.

The only downsides are that your linter won't like it and that this masks the base functionality of ? in R .
As of v0.1 help files can still be accessed by the ? operator whilst rtern is attached!

Who needs help files? Not you, champ.

Why?

rtern is a lighthearted project for practicing package development and nonstandard evaluation in R. The ? operator implementation borrows heavily from this Stack Exchange answer.

Installation

You can install the latest released version of rtern from CRAN with:

install.packages("rtern")

Or install the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("grddavies/rtern")
Metadata

Version

0.1.2

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows