亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何對R中元素包含字母和數字的字符向量進行排序?

如何對R中元素包含字母和數字的字符向量進行排序?

慕田峪4524236 2019-08-02 17:25:59
如何對R中元素包含字母和數字的字符向量進行排序?我有一個字符數組cf <- c("V440","V457","V116","V327","V446","V108",          "V155","V217","V120","V51","V477")我想按降序排序,以便我有這樣的輸出:V51 V108 V116 V120 V155 V217 V327 V440 V446 V457 V477我試過sort.list()這樣的cf[sort.list(cf)]得到了這個答案:[1] "V108" "V116" "V120" "V155" "V217" "V327" "V440" "V446" "V457" "V477" "V51"并嘗試order()了同樣的結果。有誰可以幫助我嗎
查看完整描述

3 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

試試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(不確定為什么不會),如果你的矢量有一個相當一致的模式(例如字母跟數字),你也可以嘗試這樣的事情。(注意:相對未經測試。)


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" 


查看完整回答
反對 回復 2019-08-02
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

這里有很多正確的答案,這是另一種方式,只是為了好玩。

cf[order(nchar(cf), cf)]# [1] "V51"  "V108" "V116" "V120" "V155" "V217" "V327" "V440" "V446" "V457" "V477"


查看完整回答
反對 回復 2019-08-02
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

使用str_sort函數的一行代碼中的另一個解決方案(來自 stringrpackg)

# 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"


查看完整回答
反對 回復 2019-08-02
  • 3 回答
  • 0 關注
  • 4989 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號