r - 从 R 中的列表中获取时的默认值

标签 r clojure

在 Clojure 中你可以这样做:

(def x {:a 1 :b 2})
(def y (or (:c x) 111))

在 R 中你可以这样做:

x = list(a = 1, b = 2)
y = {
    if ("c" %in% names(x)) {
        x$c
    } else {
        111
    }
}

它有效,但远没有那么优雅。有没有更好的办法?

最佳答案

dplyr 中定义但未导出(https://github.com/hadley/dplyr/blob/master/R/utils.r#L81)是运算符

"%||%" <- function(x, y) if(is.null(x)) y else x

然后就可以写了

x$a %||% 1111

关于r - 从 R 中的列表中获取时的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31479895/

相关文章:

r - 如何在 R 中进行子集化后删除列表中的空 data.frame

mysql - 使用 dplyr 或池 : MySQL server has gone away 并行处理和查询 SQL

r - 使用 data.table 按变量分组查找均值差

r - 创建一个 fiddle 图,其中 fiddle 图和箱线图在 ggplot2 中具有不同的颜色

flutter - ClojureDart : Execution error at cljd. 编译器/load-libs-info (compiler.cljc :126). EOF 读取时

r - shapiro.test(..) 无法处理超过 5000 个数据点

clojure - 基座 : what data flow can you use to render a newly initialized empty list?

clojure - 来自 SICP 的 Clojure 中的 count-leaves

variables - 如何在 Clojure 宏中绑定(bind)变量?

Clojure:检查两个原子中具有相同键的值是否相等(使用 add-watch)