我有一个这样的数据帧:

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" 

我想把行名转换成第一列。目前,我使用类似这样的东西来将行名作为第一列:

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

这样做有单线吗?


当前回答

或者使用DBIs的sqlRownamesToColumn

library(DBI)
sqlRownamesToColumn(df)

其他回答

把我的评论移动到上面每个建议的答案:

你不需要额外的包裹,这里有一句话:

d <- cbind(rownames(d), data.frame(d, row.names=NULL))

Dplyr::as_tibble(df, rownames = "your_row_name")会给你更简单的结果。

将数据行名更改为实际列

data <- data %>%
  rownames_to_column(var="the name you want")

或者,您可以创建一个新的数据帧(或覆盖当前的数据帧,如下例所示),这样您就不需要使用任何外部包。然而,这种方法对于巨大的数据帧可能不太有效。

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

或者使用DBIs的sqlRownamesToColumn

library(DBI)
sqlRownamesToColumn(df)