Hi, this is my first post, so here goes... 
I have been practising with the 'iris' dataset - filtering the data with three methods to see the result. However in example 3 below, the subset function (iris_3) is producing different results to iris_1 and iris_2. Can anyone explain why? Many thanks.
# Example One: | (OR) returns 87 obs/5 variables for each line
(iris_1 <- filter(iris, Sepal.Length > 7 | Sepal.Width <= 3))
(iris_2 <- iris[iris$Sepal.Length > 7 | iris$Sepal.Width <= 3, ])
(iris_3 <- subset(iris, Sepal.Length > 7 | Sepal.Width <= 3))
#-------------------------------------------------------
# Example Two: & (And) returns 8 obs/5 variables for each line
(iris_1 <- filter(iris, Sepal.Length > 7 & Sepal.Width <= 3))
(iris_2 <- iris[iris$Sepal.Length > 7 & iris$Sepal.Width <= 3, ])
(iris_3 <- subset(iris, Sepal.Length > 7 & Sepal.Width <= 3))
#------------------------------------------------------
# Example Three: , (comma)returns 8 obs for iris_1, and iris_2
# but 12 obs for iris_3?
(iris_1 <- filter(iris, Sepal.Length > 7, Sepal.Width <= 3))
(iris_2 <- iris[iris$Sepal.Length > 7, iris$Sepal.Width <= 3, ])
(iris_3 <- subset(iris, Sepal.Length > 7, Sepal.Width <= 3))