Why length function does not work correct in R?

r

Solution

`length` gives in this case the number of columns in the data frame. You can instead use `nrow` or `ncol` to get the number of rows or number of columns respectively:

nrow(fuel.frame[fuel.frame$Type=="Small",])

Another example using iris dataset:

> d = head(iris)
> d
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
> nrow(d)
[1] 6
> ncol(d)
[1] 5
> dim(d)
[1] 6 5

Problem

Following R code gives the cars which are in Type Small. But length function returns 6 instead of 13. Why is that? ``` > fuel.frame[fuel.frame$Type=="Small",] row.names Weight Disp. Mileage Fuel Type 1 Eagle.Summit.4 30 0.97 33 3.030303 Small 2 Ford.Escort.4 28 114.00 33 3.030303 Small 3 Ford.Festiva.4 23 0.81 37 2.702703 Small 4 Honda.Civic.4 27 0.91 32 3.125000 Small 5 Mazda.Protege.4 29 113.00 32 3.125000 Small 6 Mercury.Tracer.4 27 0.97 26 3.846154 Small 7 Nissan.Sentra.4 27 0.97 33 3.030303 Small 8 Pontiac.LeMans.4 28 0.98 28 3.571429 Small 9 Subaru.Loyale.4 27 109.00 25 4.000000 Small 10 Subaru.Justy.3 24 0.73 34 2.941176 Small 11 Toyota.Corolla.4 28 0.97 29 3.448276 Small 12 Toyota.Tercel.4 25 0.89 35 2.857143 Small 13 Volkswagen.Jetta.4 28 109.00 26 3.846154 Small > length(fuel.frame[fuel.frame$Type=="Small",]) [1] 6 ```

Original source