从R中的列表提取时的默认值
在clojure中,您可以执行以下操作:从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)
(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