3 回答

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
試試mixedsort“gtools”套餐:
> # install.packages("gtools") ## Uncomment if not already installed
> library(gtools)
> mixedsort(cf)
[1] "V51" "V108" "V116" "V120" "V155" "V217" "V327" "V440" "V446" "V457" "V477"
如果你不想使用mixedsort(不確定為什么不會(huì)),如果你的矢量有一個(gè)相當(dāng)一致的模式(例如字母跟數(shù)字),你也可以嘗試這樣的事情。(注意:相對(duì)未經(jīng)測(cè)試。)
newvec <- c("V440", "V457", "V116", "V327", "V446", "V108", "V155",
"V217", "V120", "V51", "V477", "B22", "A10", "Z01")
newvec[order(gsub("([A-Z]+)([0-9]+)", "\\1", newvec),
as.numeric(gsub("([A-Z]+)([0-9]+)", "\\2", newvec)))]
# [1] "A10" "B22" "V51" "V108" "V116" "V120" "V155" "V217" "V327" "V440"
# [11] "V446" "V457" "V477" "Z01"

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
這里有很多正確的答案,這是另一種方式,只是為了好玩。
cf[order(nchar(cf), cf)]# [1] "V51" "V108" "V116" "V120" "V155" "V217" "V327" "V440" "V446" "V457" "V477"

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
使用str_sort
函數(shù)的一行代碼中的另一個(gè)解決方案(來自 stringr
packg)
# install.packages("stringr") ## Uncomment if not already installedlibrary(stringr)
str_sort(cf, numeric = TRUE)
[1] "V51" "V108" "V116" "V120" "V155" "V217" "V327" "V440" "V446" "V457" "V477"
- 3 回答
- 0 關(guān)注
- 4981 瀏覽
添加回答
舉報(bào)