Расширение моего комментария: я подозреваю, что ваша индексация для всех циклов for
является (частью) проблемой.Текущее индексирование будет вызывать только одну итерацию, поскольку length(a == TRUE)
вернет одно целое число.Я подозреваю, что вы хотели числовые значения, где "== TRUE", чтобы вы могли вывести сообщение в этой строке.Функция which
возвращает числовые значения, соответствующие индексу значений «ИСТИНА» логического вектора, поэтому, возможно, вы хотели:
for ( i in which(a) ){
....}
else{ for (i in which(b)){
...}
else{ for (i in which(c)){
....}
Примечание: при работе с логическими векторами редко необходимо включать== TRUE
и иногда возвращает неожиданные результаты, когда вектор включает в себя NA, поскольку NA никогда не равна ==
.
Учитывая то, что вы предложили в качестве значений для этих трех векторов, я теперь думаю, что это должна была быть
{....
a <- x %in% CBOExUS # the c() not needed. This returns a logical vector
b <- x %in% RQSVExUS
e <- x %in% NATExUS
.....
Функция %in%
позволяет вам проверять множественные значения.Функция ==
спрашивает, существует ли полное равенство, что, очевидно, маловероятно.Там все еще могут быть эти исправления другими недостатками, но мы все еще без [MCVE], и поэтому мы все еще не сможем предложить проверенное кодирование.