我的数据框有223列。
dput(colnames(a6))
c("d.54", "PRODUCT", "POS", "d.53", "d.52", "d.51", "d.50", "d.49",
"d.48", "d.47", "d.46", "d.45", "d.44", "d.43", "d.42", "d.41",
"d.40", "d.39", "d.38", "d.37", "d.36", "d.35", "d.34", "d.33",
"d.32", "d.31", "d.30", "d.29", "d.28", "d.27", "d.26", "d.25",
"d.24", "d.23", "d.22", "d.21", "d.20", "d.19", "d.18", "d.17",
"d.16", "d.15", "d.14", "d.13", "d.12", "d.11", "d.10", "d.9",
"d.8", "d.7", "d.6", "d.5", "d.4", "d.3", "d.2", "d.1", "d",
"agr", "n", "s", "n.1", "s.1", "n.2", "s.2", "n.3", "s.3", "n.4",
"s.4", "n.5", "s.5", "n.6", "s.6", "n.7", "s.7", "n.8", "s.8",
"n.9", "s.9", "n.10", "s.10", "n.11", "s.11", "n.12", "s.12",
"n.13", "s.13", "n.14", "s.14", "n.15", "s.15", "n.16", "s.16",
"n.17", "s.17", "n.18", "s.18", "n.19", "s.19", "n.20", "s.20",
"n.21", "s.21", "n.22", "s.22", "n.23", "s.23", "n.24", "s.24",
"n.25", "s.25", "n.26", "s.26", "n.27", "s.27", "n.28", "s.28",
"n.29", "s.29", "n.30", "s.30", "n.31", "s.31", "n.32", "s.32",
"n.33", "s.33", "n.34", "s.34", "n.35", "s.35", "n.36", "s.36",
"n.37", "s.37", "n.38", "s.38", "n.39", "s.39", "n.40", "s.40",
"n.41", "s.41", "n.42", "s.42", "n.43", "s.43", "n.44", "s.44",
"n.45", "s.45", "n.46", "s.46", "n.47", "s.47", "n.48", "s.48",
"n.49", "s.49", "n.50", "s.50", "n.51", "s.51", "n.52", "s.52",
"n.53", "s.53", "n.54", "s.54", "r.0", "r.1", "r.2", "r.3", "r.4",
"r.5", "r.6", "r.7", "r.8", "r.9", "r.10", "r.11", "r.12", "r.13",
"r.14", "r.15", "r.16", "r.17", "r.18", "r.19", "r.20", "r.21",
"r.22", "r.23", "r.24", "r.25", "r.26", "r.27", "r.28", "r.29",
"r.30", "r.31", "r.32", "r.33", "r.34", "r.35", "r.36", "r.37",
"r.38", "r.39", "r.40", "r.41", "r.42", "r.43", "r.44", "r.45",
"r.46", "r.47", "r.48", "r.49", "r.50", "r.51", "r.52", "r.53",
"r.54")
我尝试以这种方式重新排序列
agr d d.1 d.2 --d.54 ....
按1个字符排序,然后按每个组中的数字排序。
我试试a7=a6[,order(colnames(a6))]
但它只是像char一样排序,得到这样的结果
colnames(a7)
[1] "agr" "d" "d.1" "d.10" "d.11" "d.12" "d.13" "d.14" "d.15" "d.16" "d.17"
[12] "d.18" "d.19" "d.2" "d.20" "d.21"
认为这个问题只有答案,但我找不到......
答案 0 :(得分:5)
您可以使用mixedorder
library(gtools)
library(gtools)
a6[mixedorder(nm1)]
head(nm1[mixedorder(nm1)])
#[1] "agr" "d" "d.1" "d.2" "d.3" "d.4"
使用另一个例子
set.seed(24)
v1 <- sample(paste0(letters[1:4], '.', 1:20))
mixedsort(v1)
#[1] "a.1" "a.5" "a.9" "a.13" "a.17" "b.2" "b.6" "b.10" "b.14" "b.18"
#[11] "c.3" "c.7" "c.11" "c.15" "c.19" "d.4" "d.8" "d.12" "d.16" "d.20"
nm1 <- colnames(a6)
答案 1 :(得分:2)
a6 <- setNames(do.call(data.frame,as.list(1:223)),c("d.54","PRODUCT","POS","d.53","d.52","d.51","d.50","d.49","d.48","d.47","d.46","d.45","d.44","d.43","d.42","d.41","d.40","d.39","d.38","d.37","d.36","d.35","d.34","d.33","d.32","d.31","d.30","d.29","d.28","d.27","d.26","d.25","d.24","d.23","d.22","d.21","d.20","d.19","d.18","d.17","d.16","d.15","d.14","d.13","d.12","d.11","d.10","d.9","d.8","d.7","d.6","d.5","d.4","d.3","d.2","d.1","d","agr","n","s","n.1","s.1","n.2","s.2","n.3","s.3","n.4","s.4","n.5","s.5","n.6","s.6","n.7","s.7","n.8","s.8","n.9","s.9","n.10","s.10","n.11","s.11","n.12","s.12","n.13","s.13","n.14","s.14","n.15","s.15","n.16","s.16","n.17","s.17","n.18","s.18","n.19","s.19","n.20","s.20","n.21","s.21","n.22","s.22","n.23","s.23","n.24","s.24","n.25","s.25","n.26","s.26","n.27","s.27","n.28","s.28","n.29","s.29","n.30","s.30","n.31","s.31","n.32","s.32","n.33","s.33","n.34","s.34","n.35","s.35","n.36","s.36","n.37","s.37","n.38","s.38","n.39","s.39","n.40","s.40","n.41","s.41","n.42","s.42","n.43","s.43","n.44","s.44","n.45","s.45","n.46","s.46","n.47","s.47","n.48","s.48","n.49","s.49","n.50","s.50","n.51","s.51","n.52","s.52","n.53","s.53","n.54","s.54","r.0","r.1","r.2","r.3","r.4","r.5","r.6","r.7","r.8","r.9","r.10","r.11","r.12","r.13","r.14","r.15","r.16","r.17","r.18","r.19","r.20","r.21","r.22","r.23","r.24","r.25","r.26","r.27","r.28","r.29","r.30","r.31","r.32","r.33","r.34","r.35","r.36","r.37","r.38","r.39","r.40","r.41","r.42","r.43","r.44","r.45","r.46","r.47","r.48","r.49","r.50","r.51","r.52","r.53","r.54"));
names(a6)[do.call(order,c(read.table(text=names(a6),sep='.',fill=T),na.last=F))];
## [1] "agr" "d" "d.1" "d.2" "d.3" "d.4" "d.5"
## [8] "d.6" "d.7" "d.8" "d.9" "d.10" "d.11" "d.12"
## [15] "d.13" "d.14" "d.15" "d.16" "d.17" "d.18" "d.19"
## [22] "d.20" "d.21" "d.22" "d.23" "d.24" "d.25" "d.26"
## [29] "d.27" "d.28" "d.29" "d.30" "d.31" "d.32" "d.33"
## [36] "d.34" "d.35" "d.36" "d.37" "d.38" "d.39" "d.40"
## [43] "d.41" "d.42" "d.43" "d.44" "d.45" "d.46" "d.47"
## [50] "d.48" "d.49" "d.50" "d.51" "d.52" "d.53" "d.54"
## [57] "n" "n.1" "n.2" "n.3" "n.4" "n.5" "n.6"
## [64] "n.7" "n.8" "n.9" "n.10" "n.11" "n.12" "n.13"
## [71] "n.14" "n.15" "n.16" "n.17" "n.18" "n.19" "n.20"
## [78] "n.21" "n.22" "n.23" "n.24" "n.25" "n.26" "n.27"
## [85] "n.28" "n.29" "n.30" "n.31" "n.32" "n.33" "n.34"
## [92] "n.35" "n.36" "n.37" "n.38" "n.39" "n.40" "n.41"
## [99] "n.42" "n.43" "n.44" "n.45" "n.46" "n.47" "n.48"
## [106] "n.49" "n.50" "n.51" "n.52" "n.53" "n.54" "POS"
## [113] "PRODUCT" "r.0" "r.1" "r.2" "r.3" "r.4" "r.5"
## [120] "r.6" "r.7" "r.8" "r.9" "r.10" "r.11" "r.12"
## [127] "r.13" "r.14" "r.15" "r.16" "r.17" "r.18" "r.19"
## [134] "r.20" "r.21" "r.22" "r.23" "r.24" "r.25" "r.26"
## [141] "r.27" "r.28" "r.29" "r.30" "r.31" "r.32" "r.33"
## [148] "r.34" "r.35" "r.36" "r.37" "r.38" "r.39" "r.40"
## [155] "r.41" "r.42" "r.43" "r.44" "r.45" "r.46" "r.47"
## [162] "r.48" "r.49" "r.50" "r.51" "r.52" "r.53" "r.54"
## [169] "s" "s.1" "s.2" "s.3" "s.4" "s.5" "s.6"
## [176] "s.7" "s.8" "s.9" "s.10" "s.11" "s.12" "s.13"
## [183] "s.14" "s.15" "s.16" "s.17" "s.18" "s.19" "s.20"
## [190] "s.21" "s.22" "s.23" "s.24" "s.25" "s.26" "s.27"
## [197] "s.28" "s.29" "s.30" "s.31" "s.32" "s.33" "s.34"
## [204] "s.35" "s.36" "s.37" "s.38" "s.39" "s.40" "s.41"
## [211] "s.42" "s.43" "s.44" "s.45" "s.46" "s.47" "s.48"
## [218] "s.49" "s.50" "s.51" "s.52" "s.53" "s.54"