gpt4 book ai didi

r - R 允许运算符是复合表达式吗?

转载 作者:行者123 更新时间:2023-12-04 17:09:30 24 4
gpt4 key购买 nike

在 Harold Abelson 的“计算机程序的结构和解释”中,它使用了 Lisp编程语言,其中一个练习要求您评估以下代码:

(define (a-plus-abs-b a b)
((if (> b 0) + -) a b))

R 中执行此操作的一种方法当然是:
APlusAbsB <- function(a, b){
if(b > 0) a + b else a - b
}

然后我重复了 a s 和 b s。

我的问题是:是否 R允许运算符是复合表达式(例如, if (> b 0) + -) )?例如,有没有办法做类似的事情
APlusAbsB <- function(a, b){  ## this doesn't work
if(b > 0) "+" else "-" (a, b) ## gives "+" or "-"
}

最佳答案

尝试

APlusAbsB <- function(a, b){
(if(b > 0) `+` else `-`)(a, b)
}

这里 if将返回一个函数,然后您使用括号语法调用它。例如
APlusAbsB(1,5)
# [1] 6
APlusAbsB(1,-1)
# [1] 2

关于r - R 允许运算符是复合表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25576063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com