Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R中的列表提取时的默认值_R_Clojure - Fatal编程技术网

从R中的列表提取时的默认值

从R中的列表提取时的默认值,r,clojure,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 } } 它可以工作,但远没有那么优雅。有更好的方法吗?这可以用更少的空间达到同样的效果: x <- list(a = 1, b = 2)

在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
    }
}

它可以工作,但远没有那么优雅。有更好的方法吗?

这可以用更少的空间达到同样的效果:

 x <- list(a = 1, b = 2)
 y <- ifelse("c" %in% names(x), x$a, 111)

dplyr
中定义但未导出()的
x是运算符

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

y
定义中,甚至不需要一个
{
。我猜你的意思是
如果(“a”%in%names(x))
。啊,一个打字错误。它应该是
x$c
。只是一个小提示:在clojure中,你可以做
(:cx111)
获取默认值111。不
必要。@Andre啊,是的。我模模糊糊地记得有类似的东西。酷。
x$a %||% 1111