无法使函数返回TRUE

时间:2015-05-30 19:12:23

标签: r function for-loop logical-operators scoping

我有一些代码来检查函数的输入是否是有效的US状态。我有一个带有State列的CSV文件,这些是我唯一关心的状态。所以我用for循环创建了这个代码来检查输入是否匹配该列表中的任何状态,如果是,则返回值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 个答案:

答案 0 :(得分: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)
        }
    }
}