The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Title: A Ternary Conditional Operator for R
Version: 0.1.2
Description: A small language extension for succinct conditional assignment using '?' and ':', emulating the conditional ternary operator syntax using in C, Java, JavaScript and other languages.
License: MIT + file LICENSE
Encoding: UTF-8
RoxygenNote: 7.1.2
URL: https://github.com/grddavies/rtern
BugReports: https://github.com/grddavies/rtern/issues
Suggests: covr, testthat (≥ 3.0.0), spelling, lifecycle
Config/testthat/edition: 3
Language: en-US
Imports: utils, rlang
NeedsCompilation: no
Packaged: 2022-01-24 17:58:24 UTC; Gethin.Davies
Author: Gethin Davies [aut, cre]
Maintainer: Gethin Davies <grd.davies@gmail.com>
Repository: CRAN
Date/Publication: 2022-01-24 18:12:43 UTC

Succinct conditional evaluation and assignment

Description

[Experimental]

? is an in-line if/else operator

Usage

lhs ? rhs

Arguments

lhs

A logical expression, vector or matrix.

rhs

A pair of values separated by a colon i.e. value_if_true : value_if_false.

Details

The syntax for ? is as follows:

condition ? value_if_true : value_if_false

The condition is evaluated TRUE or FALSE as a Boolean expression. On the basis of the evaluation of the Boolean condition, the entire expression returns value_if_true if condition is true, but value_if_false otherwise. In the case where the condition is a vector/matrix of Boolean values, the function returns a vector/matrix where each element is either value_if_true or value_if_false based on the truthiness of the elements of the object on the left-hand side. In these cases the behaviour of ⁠?⁠ mimics ifelse.

Who has time for if/else?

Value

One of the values in rhs, depending on the truthiness of lhs.

Examples

# Conditional evaluation
4 > 3 ? "it_was_true":"it_was_false"
# > "it_was_true"

FALSE ? "it_was_true":"it_was_false"
# > "it_was_false"

# Vectorised evaluation
c(4, 2) < 3 ? "it_was_true":"it_was_false"
# > "it_was_false" "it_was_true"

# Conditional assignment with `<-`
x <- 4 > 3 ? "it_was_true":"it_was_false"
x
# > "it_was_true"

# Conditional assignment with `=`
y <- 3 > 4 ? "it_was_true":"it_was_false"
y
# > "it_was_false"

# Chaining `?` statements
z <- FALSE ? "true":(FALSE ? "false,true":(TRUE ? "false,false,true":"all false"))
z
# > "false,false,true"

Check if an expression is an assignment

Description

[Experimental]

Takes an expression that has been cast to a list and returns true if using left-assignment with either ⁠<-⁠ or =

Usage

is_assignment(parse_tree)

Arguments

parse_tree

An unevaluated expression as a list

Value

A logical

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.