我有一个数据框,正在使用reshape2
包中的dcast
函数进行操作,并且我想要删除第一列并将其作为数据帧的行名。
dcast
之前的原始数据框:
> corner(df)
ID_full gene cpm
1 S36-A1 DDX11L1 0
2 S36-A1 WASH7P 0
3 S36-A1 MIR1302-2 0
4 S36-A1 FAM138A 0
5 S36-A1 OR4F5 0
使用pivot
函数将表格转换成宽表:
library(reshape2)
pivot <- function(x){
castTable <- x %>% dcast(ID_full ~ gene, value.var="cpm")
}
在我的pivot
函数中调用dcast
之后:
> corner(df)
ID_full 1060P11.3 A1BG A1BG-AS1 A1CF
1 S36-A1 0 0 0 0
2 S36-A10 0 0 0 0
3 S36-A11 0 0 0 0
4 S36-A12 0 0 0 0
5 S36-A2 0 0 0 0
我希望将ID_full变为行名,并停止作为列存在,然后在dcasting
之后进行传递。我可以用几行代码完成此操作,每次替换数据框,但我希望使用%>%
运算符完成所有操作。
我能想到的最好的方法是类似于这样的东西,但显然它不起作用:
library(dplyr)
df <- df %>% pivot(.) %>% with(., row.names=df[,1])
我会很感激你提供任何建议……这个烦人的问题让我快疯了!
更新:
谢谢大家的回答:
这个表达方式很好:
df <- df %>% pivot(.) %>% `rownames<-`(.[,1]) %>% select(-ID_full)
> corner(df)
1060P11.3 A1BG A1BG-AS1 A1CF A2M
S36-A1 0 0 0 0 0.00000
S36-A10 0 0 0 0 0.00000
S36-A11 0 0 0 0 0.00000
S36-A12 0 0 0 0 1.62189
S36-A2 0 0 0 0 1170.95000
dput()
> 控制台输出。corner()
是从哪里来的??rename
;?rownames
. - hrbrmstr