if ( cond) { yes } else { no }
является структурой управления. Он был разработан для создания программных вилок, а не для обработки последовательности. Я думаю, что многие люди пришли из SPSS или SAS, авторы которых выбрали «IF» для реализации условного присвоения в своих функциях DATA или TRANSFORM, и поэтому они ожидают, что R будет вести себя одинаково, тогда как R - из традиции программирования. R неявные for-loops встроены во множество векторизованных функций (включая ifelse
).
ifelse
принимает выражение, которое строит вектор логических значений в качестве первого аргумента. Второй и третий аргументы должны быть векторами равной длины, и либо первый из них, либо второй выбирается. Это похоже на команды SPSS / SAS IF
, которые имеют неявный режим работы по строке.