Логические операторы длинных и коротких форм на векторах

Я читал много сообщений на 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.

Другие вопросы по тегам