Ответ 1
На странице справки для Logical Operators
, доступной с помощью ?"&&"
:
& и && указать логические И и | и || указать логическое ИЛИ. Более короткая форма выполняет элементарные сравнения во многом аналогично арифметическим операторам. Более длинная форма оценивает слева направо, исследуя только первый элемент каждого вектора. Оценка продолжается только до тех пор, пока не будет определен результат. Более длинная форма подходит для программирования потока управления и, как правило, предпочтительнее в разделах if.
(версия R 2.13-0)
Другими словами, при использовании subset
используйте одиночный &
.
Вот иллюстрация разницы:
c(1,1,0,0) & c(1,0,1,0)
[1] TRUE FALSE FALSE FALSE
c(1,1,0,0) && c(1,0,1,0)
[1] TRUE
Если это выглядит странно по сравнению с другими парадигмами программирования, помните, что R должен обеспечить векторную форму оператора.