我正在研究一个大于40列的大型数据帧.我希望能够移动列,而无需指定所有列名称.例如:
a<-c(1:5)
b<-c(4,3,2,1,1)
Percent<-c(40,30,20,10,10)
Labels<-c("Cat","Dog","Rabbit","Rat","Mouse")
df1<-data.frame(a,b,Percent,Labels)
Run Code Online (Sandbox Code Playgroud)
如何将列'Lables'移动到列'a'之前,而不必写入所有其他列名称(即我可以在另一列之前/之后指定一列?).
谢谢.
快速和肮脏的东西(即没有健全性检查等,假设只colname提供一个):
moveToFirstCol <- function(df, colname) {
cnams <- colnames(df)
want <- which(colname == cnams)
df[, c(cnams[want], cnams[-want])]
}
Run Code Online (Sandbox Code Playgroud)
这使:
> moveToFirstCol(df1, "Labels")
Labels a b Percent
1 Cat 1 4 40
2 Dog 2 3 30
3 Rabbit 3 2 20
4 Rat 4 1 10
5 Mouse 5 1 10
Run Code Online (Sandbox Code Playgroud)
如果您需要额外的灵活性,这应该建议一种处理此类事情的方法.