Convertir nombres de filas en la primera columna

Tengo un dataframe como este:

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" 

Quiero convertir los nombres de fila en la primera columna. Actualmente utilizo algo como esto para hacer nombres de fila como la primera columna:

  d <- df names <- rownames(d) rownames(d) <- NULL data <- cbind(names,d) 

¿Hay una sola línea para hacer esto?

Puede eliminar nombres de fila y convertirlos a una columna por referencia (sin reasignar memoria utilizando -> ) usando setDT y su argumento keep.rownames = TRUE del paquete data.table

 library(data.table) setDT(df, keep.rownames = TRUE)[] # rn VALUE ABS_CALL DETECTION P.VALUE # 1: 1 1007_s_at 957.7292 P 0.004862793 # 2: 2 1053_at 320.6327 P 0.031335632 # 3: 3 117_at 429.8423 P 0.017000453 # 4: 4 121_at 2395.7364 P 0.011447358 # 5: 5 1255_g_at 116.4936 A 0.397993682 # 6: 6 1294_at 739.9271 A 0.066864977 

O puede usar dplyr de add_rownames que hace lo mismo que la respuesta de David:

 library(dplyr) df <- add_rownames(df, "VALUE") 

ACTUALIZACIÓN (mediados de 2016):

add_rownames() ha quedado en desuso y está siendo reemplazado por tibble::rownames_to_column() (mismas funciones, pero Hadley refactorizó dplyr un poco).

Una opción de una línea es:

 df$names <- rownames(df) 

Alternativamente, puede crear un nuevo dataframe (o sobrescribir el actual, como el ejemplo a continuación) para que no necesite usar ningún paquete externo. Sin embargo, es posible que esta forma no sea eficiente con enormes marcos de datos.

 df <- data.frame(names = row.names(df), df) 
Intereting Posts