意外的'< ='在IF声明中

时间:2017-10-08 17:21:37

标签: r function if-statement

我试图创建一个取决于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 "}"

如果有人能够指出我错过的东西,我将非常感激。

提前,谢谢!

1 个答案:

答案 0 :(得分:2)

解析器不喜欢它,这就是你收到错误的原因。

这是一件好事,因为它可能让你遇到麻烦,请参阅:

1 < 3

TRUETRUE,然后1被强制为1<2TRUE>

在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::betweenbetween(x, t[1], t[2])

data.table

x %between% c(t[1], t[2])也允许使用语法display