Использование функции и нескольких условий - PullRequest
0 голосов
/ 25 января 2020

Вопрос в том, чтобы создать функцию ans (a, b, x, y), которая возвращает значение x, если a = 1 и b = 1, значение y, если a = 1 и b = 0, и значение 0 в противном случае. Я пробовал этот код:

ans <- function(a,b,x,y) if(a<-1&b<-1){return(x)} & if(a<-1&b<-0) 
{return(y)} else{return(0)}

, но этот код не работает. Пожалуйста, помогите мне найти опечатку в этом.

Ответы [ 3 ]

1 голос
/ 25 января 2020

Я понимаю, что AlexB поддерживает синтаксис OP. Но в качестве FYI для OP хорошей практикой является присвоение возвращаемого значения переменной и возврат переменной только один раз в конце функции. Так что-то вроде:

ans <- function(a,b,x,y) {

      retVal <- 0

      if( a == 1 & b == 1) {

            retVal <- x

      } else if (a == 1 & b == 0) {

            retVal <- y

      }

      return(retVal)

}
1 голос
/ 25 января 2020

Вот еще один способ.

ans <- function(a, b, x, y){
  if(a == 1 & b %in% 0:1){
    if(b == 1) x else  y
  } else 0
}

Контрольные примеры:

x <- pi
y <- sqrt(2)

ans(1, 1, x, y)
#[1] 3.141593
ans(1, 0, x, y)
#[1] 1.414214
ans(1, -1, x, y)
#[1] 0
ans(0, 1, x, y)
#[1] 0
1 голос
/ 25 января 2020

Вам нужно работать так:

ans <- function(a,b,x,y) {

  if( a == 1 & b == 1) {

    return(x)

  } else if (a == 1 & b == 0) {

    return(y)

  } else {

    0

  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...