दिलचस्प पोस्ट
HTML इनपुट – नाम बनाम आईडी सिग्नल आर कंसोल ऐप उदाहरण जावास्क्रिप्ट – URL पथ का हिस्सा प्राप्त करें क्या प्रोजेक्ट वर्गों और प्रोजेक्ट निर्भरताओं को एक "uber" जार बनाने के लिए संभव है, जो कस्टम मेनिफेस्ट फाइल के साथ जार है? जावास्क्रिप्ट jsfiddle.net पर नहीं चल रहा है कैसे क्रोम में "संपत्ति परिवर्तन पर ब्रेक"? जावास्क्रिप्ट में मैं कैसे एक सरणी को खाली कर सकता हूं? ऊंचा प्रक्रिया चलाएं "$" साइन इन जावास्क्रिप्ट का क्या अर्थ है? XML दस्तावेज़ों में भाग लेने के लिए मुझे कौन-कौन से पात्रों की आवश्यकता है? क्या मैं एक बैट फ़ाइल में एक इनपुट पाठ को मुखौटा कर सकता हूं? मथ.फ्लूर () और गणित के बीच का अंतर। ट्रिन्केट () (grep) गैर-एएससीआईआई वर्णों से मिलान करने के लिए रेगेक्स? किसी डेटा फ्रेम में नाम से कॉलम ड्रॉप कैसे करें php curl: मैं एक वेब ब्राउज़र की तरह ठीक एक अनुरोध प्राप्त कैसे कर सकता हूँ?

स्ट्रिंग में अक्षरों को कैसे सॉर्ट करना है?

मान लें कि मेरे पास एक स्ट्रिंग है s = "bcabca"

"aabbcc" बाहर निकलने का सबसे सरल तरीका क्या है, यानी, s में अक्षरों को क्रमबद्ध करें?

वेब के समाधान से एकत्रित समाधान "स्ट्रिंग में अक्षरों को कैसे सॉर्ट करना है?"

शायद सबसे सरल जवाब नहीं, लेकिन यह काम करेगा:

 paste(sort(unlist(strsplit(s, ""))), collapse = "") 

या strReverse फ़ंक्शन को संशोधित करें जो कि हमारी जरूरतों के अनुसार सहायता पृष्ठ में ?strsplit लिए परिभाषित किया गया है हम इसे strSort कॉल करेंगे:

 strSort <- function(x) sapply(lapply(strsplit(x, NULL), sort), paste, collapse="") 

यहां चेज़ के समाधान का एक प्रकार है जो स्ट्रिंग के एक वेक्टर को संभालता है और मूल तार को नाम के रूप में रखता है। … और मुझे sapply पर vapply के उपयोग को बढ़ावा देने का मौका मिलता है 🙂

 > x=c('hello', 'world', NA, 'a whole sentence') > vapply(x, function(xi) paste(sort(strsplit(xi, NULL)[[1]]), collapse=''), '') hello world <NA> a whole sentence "ehllo" "dlorw" "" " aceeeehlnnostw" 

इस समस्या के लिए stringi पैकेज का उल्लेख करना अच्छा होगा। यह stri_order और stri_sort फ़ंक्शन बहुत ही कुशल हैं, ऊपर वर्णित आधार आर विधि के आधे समय पर परीक्षण करना।

 library(stringi) ## generate 10k random strings of 100 characters each str <- stri_rand_strings(1e4, 100) ## helper function for vapply() striHelper <- function(x) stri_c(x[stri_order(x)], collapse = "") ## timings system.time({ v1 <- vapply(stri_split_boundaries(str, type = "character"), striHelper, "") }) # user system elapsed # 0.747 0.000 0.743 system.time({ v2 <- sapply(lapply(strsplit(str, NULL), sort), paste, collapse="") }) # user system elapsed # 2.077 0.000 2.068 identical(v1, v2) # [1] TRUE 

इस पर गौर करके, मेरा पुराना उत्तर इतना अच्छा नहीं था। यहां base फ़ंक्शंस के साथ एक बेहतर संस्करण है:

 vapply(strsplit(x, NULL), function(x) paste(sort(DT$name), collapse = ''), '') 

इस परीक्षण वेक्टर के आधार पर:

 NN = 1000000L starts = seq(1L, NN, by = 100L) name = substring(paste(sample(letters, size = NN, replace = TRUE), collapse = ""), starts, starts + 99L)