[R] remove a row from a dataframe, row names disappear

Sarah Goslee sarah.goslee at gmail.com
Fri Feb 5 15:50:04 CET 2010


You're not only removing a row of data, you are invoking the default
behavior of subset, which is to collapse the subsetted result to the
smallest possible type, which in this case is a vector. Vectors have
no rows, and thus no row names.

You need the drop=FALSE argument, as in
ENV <- ENV[-1, , drop=FALSE]

Sarah

On Fri, Feb 5, 2010 at 9:44 AM, Euan Reavie <euan.reavie at gmail.com> wrote:
> I find this odd because it doesn't appear to happen in larger datasets. I
> have the following data set ENV with the first column set as row.names:
>
>> ENV
>         TPlog
> 001S29H  0.601
> 002S42H  0.602
> 003S43S  0.779
> 004S43S  0.702
> 005S51H  0.978
> 006S52P  2.718
>
> If I apply > ENV <- ENV[-1,]  # remove first row of data (right?)
> ...ENV comes back as:
>
> [1] 0.602 0.779 0.702 0.978 2.718
>
> So I am losing the row name info. I also notice that, if the first two
> values in the TPlog column are the same, both values are removed! What's
> going on, and why does this same thing not happen in more complex datasets
> with more than one column of values?
>
> Many thanks - Euan.


-- 
Sarah Goslee
http://www.functionaldiversity.org



More information about the R-help mailing list