126*_*7b9 1 string r character
我有这个字符串
D = c("0" , "11", "12", "13", "14", "15", "16", "21", "22", "23", "24", "25", "26", "31", "32", "33", "34", "35", "36", "41", "42", "43", "44","45", "46","51","52", "53", "54", "55", "56", "61", "62", "63", "64", "65", "66")
Run Code Online (Sandbox Code Playgroud)
如果我想删除那些低于 30 的字符而不将字符串转换为数字,我该怎么办?
如果我想根据单元号重新排序字符串(这意味着所有最后一个为 1 的字符串都排在最后两个为最后一个的字符串之前,依此类推,例如 31、41、51、61、32、42 等,这应该是操作?
谢谢
您不必转换为数字,D[D >= 30]工作正常。>=也适用于字符向量,排序取决于您的区域设置。查看?Comparison更多详细信息。
D[D >= "30"]
#[1] "31" "32" "33" "34" "35" "36" "41" "42" "43" "44" "45" "46" "51" "52" "53" "54" "55" "56" "61" "62" "63" "64" "65" "66"
Run Code Online (Sandbox Code Playgroud)
对于排序,这将起作用(但可能仅当您有 2 位数字时):
str_rev <- stringi::stri_reverse
str_rev(sort(str_rev(D[D >= "30"])))
# [1] "31" "41" "51" "61" "32" "42" "52" "62" "33" "43" "53" "63" "34" "44" "54" "64" "35"
#[18] "45" "55" "65" "36" "46" "56" "66"
Run Code Online (Sandbox Code Playgroud)
或者与str_sub:
library(stringr)
D[order(str_sub(D, -1, -1))]
Run Code Online (Sandbox Code Playgroud)