Логические операторы длинных и коротких форм на векторах
Я читал много сообщений на SO о разнице между краткой и длинной формой для логических операторов, но мне нужна явная точность.
Я прочитал это:
Более длинная форма оценивает слева направо, рассматривая только первый элемент каждого вектора.
Тогда это:
c(TRUE, TRUE) && c(TRUE, NA)
строго та же операция, чем эта:
(c(TRUE, TRUE) & c(TRUE, NA))[1]
Результат логического & между 1-го элемента 1-го вектора и 1-го элемента второго вектора?
Если это правильно, то какой смысл возвращать просто значение, возвращаемое логическим оператором между первым элементом каждого вектора?
Я предполагал, что это не должно использоваться с векторами тогда?
1 ответ
?'&&'
дает место, которое вы хотите более длинную форму:
The longer form is appropriate for programming control-flow and typically
preferred in if clauses.
if
принимает одно значение. К несчастью, &&
не выдает предупреждение, если вектор превышает длину 1 (if
предупреждает) так что сложнее поймать такую ошибку.
На самом деле, вы не должны использовать &&
с векторами длины, отличными от 1.