Проблема заключается в том, что внутренний цикл прерывается только в случае совпадения строки first TRS Чтобы ваш код работал, вам нужно сделать так:
a_2011<- data.frame(c("10N11W11", "10N11W11", "10N12W7", "10N13W22" , "10N14W1"))
TRS <- data.frame(c("10N12W7","10N13W22","10N14W1", "10N15W33"))
for (i in 1:nrow(a_2011))
{
flag <- 0
for (j in 1:nrow(TRS))
{
if ( as.character(a_2011[i,1]) == as.character(TRS[j,1]) )
{
flag <- 1
break
}
}
a_2011$City[i] <- flag
}
Вы можете устранить необходимость во внутреннем цикле следующим образом:
a_2011<- data.frame(c("10N11W11", "10N11W11", "10N12W7", "10N13W22" , "10N14W1"))
TRS <- data.frame(c("10N12W7","10N13W22","10N14W1", "10N15W33"))
for (i in 1:nrow(a_2011))
{
flag <- any(as.character(a_2011[i,1]) == as.character(TRS[,1]))
a_2011$City[i] <- as.numeric(flag)
}
.. А затем, чтобы еще больше упростить его, вы можете удалить и внешний цикл:
a_2011<- data.frame(c("10N11W11", "10N11W11", "10N12W7", "10N13W22" , "10N14W1"))
TRS <- data.frame(c("10N12W7","10N13W22","10N14W1", "10N15W33"))
a_2011$City <- as.numeric(a_2011[[1]] %in% TRS[[1]])