将行名转换为第一列
我有这样的数据框:
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)
是否有一条线来做到这一点?
您既可以通过引用 (不使用->
来重新分配内存),也可以使用setDT
及其data.table
包中的keep.rownames = TRUE
参数来删除行名并将其转换为列
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
或者你可以使用dplyr
的add_rownames
,它和David的答案一样:
library(dplyr) df <- add_rownames(df, "VALUE")
更新(2016年中):
add_rownames()
已被弃用,正在被replace为tibble::rownames_to_column()
(相同的function,但哈德利重构dplyr
了一下)。
一行选项是:
df$names <- rownames(df)
或者,您可以创build一个新的数据框(或覆盖当前的数据框,如下例所示),因此不需要使用任何外部程序包。 然而,这种方式可能不是有效的巨大的dataframe。
df <- data.frame(names = row.names(df), df)