当我尝试将参数传递给if函数时,为什么R生成错误

时间:2017-03-16 06:26:31

标签: r

这里我给的是代码

#my user defined function
my.display<-function(x,display=TRUE,type="hist",prob=TRUE)
{

  if(display=TRUE)
print("1")

  else hist(x)

  if(type=hist) hist(x) elseif(type=density) plot(density(x))
  cat("Please specify type as either hist or density")

  if(prob=TRUE) hist(x,freq=TRUE) else hist(x,freq=TRUE)
  }

错误r显示的是当它传递给if(显示= TRUE)时,我相信表达式是错误的或者其他什么。如果display = TRUE参数,那么它应该打印1否则生成向量x的直方图。

if(type=hist)也显示错误。有人请帮忙。

1 个答案:

答案 0 :(得分:2)

=在R

中充当与<-运算符相同的赋值运算符

==是一个逻辑运算符。

所以你应该使用if(display == TRUE)。您可能还想在if-else结构中添加一些{}以提高可读性。

尝试使用此代码进行第二次怀疑

更新

my.display<-function(x,display,type,prob=TRUE)
{if(display==TRUE){
    print("1")
  }
  else 
  if(type=="hist") {hist(x)}
  else
    if(type=="density") {plot(density(x))}
  else
  cat("Please specify type as either hist or density")
  if(prob==TRUE){ hist(x,freq=TRUE)}
  else 
    hist(x,freq=TRUE)
}