2015-05-30 4 views
1

У меня есть код для проверки, является ли вход в функцию действительным штатом США. У меня есть файл CSV с столбцом State, и это единственные состояния, которые мне очень нравятся. Поэтому я сделал этот код с циклом for, чтобы проверить, соответствует ли входное значение любому из состояний в этом списке, и если да, чтобы вернуть значение TRUE.Функция получения ошибок для возврата TRUE

valid_state <- function(state) { 
    CSV <- read.csv("outcome-of-care-measures.csv") 
    for (i in range(length(unique(CSV$State)))) { 
     if (state == unique(CSV$State)[i]) { 
      return (TRUE) 
     } 
    } 
} 

Все, что он возвращает, является NULL. Я знаю, что действительное состояние было введено, просто просмотрев файл CSV. Я думаю, что проблема начинается, когда я пытаюсь ввести проблему, но я не знаю почему. В принципе, вход может только соответствовать одному состоянию в списке, и если это так, он должен просто вернуть логический вектор с одним TRUE.

+1

Я думаю, что вам не нужен '' range' i..e диапазон (4) # [1] 4 4'. Вам может понадобиться 'for (i in seq (length (...' – akrun

ответ

3

Возможно это. Это распространенная ошибка, забыть предшествующий "1:":

valid_state <- function(state) { 
    CSV <- read.csv("outcome-of-care-measures.csv") 
    for (i in 1:length(unique(CSV$State))) { 
     if (state == unique(CSV$State)[i]) { 
      return (TRUE) 
     } 
    } 
} 
+0

wow ... это было именно это:/ Спасибо! Я пытаюсь изучить Python в одно и то же время, а иногда синтаксис разливается! –

+0

Отлично. Случается со мной тоже. Пожалуйста, примите решение тоже. –

+0

Привет. Не могли бы вы принять решение? –