Неожиданный '{' и 'else' - PullRequest
1 голос
/ 03 марта 2020

Попытка создать функцию, в которой можно сохранить вектор для «баллов», а затем эта функция будет определять качественный рейтинг балла. Я переставлял свои брекеты несколько раз, но все равно получаю эти ошибки. Также получаю ошибки с "else".

    credit_fun <- function(scores){
      if (scores>300 & scores<579)(incbounds = TRUE){
    'Very Poor';
    } else if (scores>580 & scores<669)(incbounds = TRUE){
    'Fair';
    } else if (scores>670 & scores<739)(incbounds = TRUE){
    'Good';
    } else if (scores>740 & scores<799)(incbounds = TRUE){
    'Very Good';
    } else if (scores>800 & scores<850)(incbounds = TRUE){
    'Exceptional'}
}

1 Ответ

1 голос
/ 03 марта 2020

Мы могли бы использовать between и case_when

library(dplyr)
credit_fun <- function(scores) {
      case_when(between(scores, 300, 579) ~ "Very Poor",
                between(scores, 580, 669) ~ "Fair",
                between(scores, 670, 739) ~ "Good",
                between(scores, 740, 779) ~ "Very Good", 
                TRUE ~ "Exceptional")

  }

Или другой вариант cut

credit_fun <- function(scores) {
           cut(scores, breaks = c(-Inf, 300, 580, 670, 740, Inf),
                 labels = c("Very Poor", "Fair", "Good", "Very Good", "Exceptional"))
  }

Или с findInterval

credit_fun <- function(scores) {
   c("Very Poor", "Fair", "Good", "Very Good", "Exceptional")[findInterval(scores, 
                 c(300, 580, 670, 740))]
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...