R函数为文本/字符变量生成“无效”

时间:2019-04-27 02:21:03

标签: r function compare

我正在尝试在R中创建一个函数,如果整数大于100,则输出“通过”;如果小于100,则输出“失败”;如果等于100,则输出“中性”。代码应显示“无效”。用于字符变量/文本。

这是我到目前为止的代码:

compare <- function(x) {

 if (x>100) {
  result = "pass"
 }

 else if (x<100) {
 result = "fail"
 }

 else if (x==100) {
 result = "neutral"
 }

 else if (is.character(x) == TRUE) {
 result = "invalid"
 }

 print(result)

 }

compare(10)
compare(100)
compare(120)
compare("text")

我期望compare(10)产生“失败”,compare(100)产生“中性”,compare(120)产生“通过”,而compare(“ text”)产生“无效”。所有整数均有效,但是compare(“ text”)会连续生成“ pass”而不是“ invalid”。 Compare(as.character(“ text”)))也只会产生“ pass”。

1 个答案:

答案 0 :(得分:0)

要创建条件语句,您需要==而不是=

compare <- function(x) {
  if (!is.numeric(x)) {
    result = "invalid"
  } else  if (x>100) {
    result = "pass"
  } else if (x<100) {
    result = "fail"
  } else if (x==100) {
    result = "neutral"
  } 

  print(result)
}

此功能对我有用。以下是输出测试。

> compare(10)
[1] "fail"
> compare(100)
[1] "neutral"
> compare(120)
[1] "pass"
> compare("hello")
[1] "invalid"