In my data frame I am trying to sort the data in descending order. I am using the below line of code for sorting my data and it works as intended.
CNS25VOL <- CNS25VOL[order(-CNS25VOL$MATVOL22), ]
However if I refer to the same column by it's index number, the code throws an error
CNS25VOL <- CNS25VOL[order(-CNS25VOL[, 2]), ]
Error thrown is
Error in CNS25VOL[, 2] : incorrect number of dimensions
While I do have a solution to what I am intending to do, but issue I see is if all of a sudden name of my column changes the code won't work. I know that their position will stay same in the data frame.
How can we handle it.
CodePudding user response:
order(-CNS25VOL[, 2])
order here does expect a vector which you try to construct via the []
in CNS25VOL[, 2]
. Normal dataframes will return a vector consisting only of the 2nd column. A tibble
however will return a tibble with only one column.
You can reproduce the behaviour of normal data.frame
s with the drop = FALSE
argument to []
as in
CNS25VOL[, 2, drop = TRUE]
Try to always be aware whether you are using a standard data.frame
or a tibble
or a data.table
because they look very similar and are not in the details. Also see https://tibble.tidyverse.org/reference/subsetting.html
dplyr
functions tend to give you a tibble
back even if you fed them a classical data.frame
.