将列中的值转换为R中现有数据框中的行名称

我想将现有数据框的列中的值转换为行名称。 是可以做到这一点,而无需导出数据框,然后用row.names = call重新导入它。

例如,我想转换:

  > samp names Var.1 Var.2 Var.3 1 A 1 5 0 2 B 2 4 1 3 C 3 3 2 4 D 4 2 3 5 E 5 1 4 

成:

 > samp.with.rownames Var.1 Var.2 Var.3 A 1 5 0 B 2 4 1 C 3 3 2 D 4 2 3 E 5 1 4 

谢谢

这应该做的:

 samp2 <- samp[,-1] rownames(samp2) <- samp[,1] 

所以总之,没有别的办法可以重新分配。

编辑:纠正我自己,也可以做到这一点:分配rowname属性,然后删除列:

 R> df<-data.frame(a=letters[1:10], b=1:10, c=LETTERS[1:10]) R> rownames(df) <- df[,1] R> df[,1] <- NULL R> df bc a 1 A b 2 B c 3 C d 4 D e 5 E f 6 F g 7 G h 8 H i 9 I j 10 J R> 

在一行中

 > samp.with.rownames <- data.frame(samp[,-1], row.names=samp[,1]) 

截至2016年,你也可以使用tidyverse

 library(tidyverse) samp %>% remove_rownames %>% column_to_rownames(var="names")