我试图创建一个取决于x值的函数,返回两个函数中的一个。当我创建以下函数时,我收到错误,我不明白为什么。
t <- c(0.1,0.9,1.5)
squeze <- function(x){
if(t[1]<x<=t[2]){
exp(a1*x+b1)
} else {
exp(a2*x+b2)
}
}
错误消息:
Error: unexpected '<=' in:
"squeze <- function(x){
if(t[1]<x<="
> exp(a1*x+b1)
Error: object 'x' not found
> } else {
Error: unexpected '}' in " }"
> exp(a2*x+b2)
Error: object 'x' not found
> }
Error: unexpected '}' in " }"
> }
Error: unexpected '}' in "}"
如果有人能够指出我错过的东西,我将非常感激。
提前,谢谢!
答案 0 :(得分:2)
解析器不喜欢它,这就是你收到错误的原因。
这是一件好事,因为它可能让你遇到麻烦,请参阅:
1 < 3
TRUE
为TRUE
,然后1
被强制为1<2
,TRUE
为>
在R `>` # function (e1, e2) .Primitive(">")
`>`(1,2) # FALSE
中是一个函数
if(t[1] < x & x <= t[2])
从这个角度来看,你会明白为什么你所尝试的东西在R中没有意义。
而是使用data.table::between
如果排除这两个边界,可以使用between(x, t[1], t[2],F)
:
data.table::between
如果您同时包含这两个边界,则可以使用dplyr::between
或between(x, t[1], t[2])
:
data.table
x %between% c(t[1], t[2])
也允许使用语法display