I have a data frame like this:
df
VALUE ABS_CALL DETECTION P-VALUE
1007_s_at "957.729231881542" "P" "0.00486279317241156"
1053_at "320.632701283368" "P" "0.0313356324173416"
117_at "429.842323161046" "P" "0.0170004527476119"
121_at "2395.7364289242" "P" "0.0114473584876183"
1255_g_at "116.493632746934" "A" "0.39799368200131"
1294_at "739.927122116896" "A" "0.0668649772942343"
I want to convert the row names into the first column. Currently I use something like this to make row names as the first column:
d <- df
names <- rownames(d)
rownames(d) <- NULL
data <- cbind(names,d)
Is there a single line to do this?
Alternatively, you can create a new dataframe (or overwrite the current one, as the example below) so you do not need to use of any external package. However this way may not be efficient with huge dataframes.
Or you can use
dplyr
'sadd_rownames
which does the same thing as David's answer:UPDATE (mid-2016):
add_rownames()
has been deprecated and is being replaced bytibble::rownames_to_column()
(same functions, but Hadley refactoreddplyr
a bit).A one line option is :
You can both remove row names and convert them to a column by reference (without reallocating memory using
->
) usingsetDT
and itskeep.rownames = TRUE
argument from thedata.table
package