这似乎是一个非常简单的流程控制结构问题,但我很难找到R语言中正确的语法,我已经尝试了很多次但都没有成功。我一定是忽略了什么非常明显的东西。
我想循环遍历一个包含巴西州代码的列表,并返回其所属的区域。我的目标是操作一个更大的数据集,而不是一个列表,但这里使用了一个最小可行性示例:
a <- c("RO", "AC", "AM" ,"RR", "PA", "AP", "TO", "MA", "PI", "CE", "RN", "PB", "PE", "AL", "SE", "BA", "MG", "ES", "RJ", "SP")
setregion <- function(uf) {
pb = txtProgressBar(min = 0, max = length(uf), initial = 0)
region_out<-list()
for (i in length(uf)) {
if (uf %in% c("RO" ,"AC" ,"AM" ,"RR", "PA" , "AP" , "TO")) {
region_out <- append(region_out,"North")
} else if ( uf %in% c("MA","PI","CE","RN","PB","PE","AL","SE","BA")) {
region_out <-append(region_out,"Northeast")
} else if ( uf %in% c("MG","ES","RJ","SP")){
region_out <- append(region_out,"Southeast")
} else if ( uf %in% c("PR", "SC", "RS")){
region_out <- append(region_out,"South")
} else if ( uf %in% c("MS","MT","GO", "DF")){
region_out <-append(region_out,"Midwest")
}
setTxtProgressBar(pb,i)
}
return(region_out)
}
setregion(a)
运行以上代码后,似乎if循环也打破了for循环,并且只返回“North”,这是列表中第一个项目的响应。
我期望得到一个看起来像这样的列表:
"North", "North", "North" ,"North", "North", "North","North", "Northeast", "Northeast",...
- 我错过了什么?