यहाँ प्रत्येक पूर्णांक ऊपर hooking के लिए यह उचित प्रत्यय के साथ एक अलग तरीका है। यदि आप इसे अलग करते हैं, तो आप देखेंगे कि यह प्रत्येक पूर्णांक के क्रमिक रूप को बनाने के लिए वाक्य रचनात्मक (?) नियम को कैप्चर करता है।
suffixPicker <- function(x) {
suffix <- c("st", "nd", "rd", rep("th", 17))
suffix[((x-1) %% 10 + 1) + 10*(((x %% 100) %/% 10) == 1)]
}
## Testing with your example
counter <- 3
k <- 9999
paste("on the ", paste0(counter, suffixPicker(counter)),
" count: ", k, sep="")
# [1] "on the 3rd count: 9999"
## Show that it also works for a range of numbers
x <- 1:24
paste0(x, suffixPicker(x))
# [1] "1st" "2nd" "3rd" "4th" "5th" "6th" "7th" "8th" "9th" "10th"
# [11] "11th" "12th" "13th" "14th" "15th" "16th" "17th" "18th" "19th" "20th"
# [21] "21st" "22nd" "23rd" "24th"
एक व्याख्यात्मक टिप्पणी: 10*(((x %% 100) %/% 10) == 1)
बिट 10 से 19 में समाप्त होने वाले नंबरों उठा लेने के लिए सभी "th"
युक्त suffix
के तत्वों को भेजने की जरूरत है (11, 12, और 13 यहाँ असली बुरा अभिनेता हैं)।
स्रोत
2012-10-23 18:58:44
अच्छा 'प्रत्यय चयनकर्ता' +1 –
उदाहरण के लिए 13 के साथ बहुत अच्छा काम नहीं करता है ... ऐसा लगता है कि यह थोड़ा अधिक जटिल है! (साथ ही, आपको यह सुनिश्चित करना होगा कि आपका पोस्ट कोड वास्तव में चुने गए 'प्रत्यय चयनकर्ता' को वापस कर देगा!) –
पेस्ट फ़ंक्शन को लूप में रखा जा सकता है? क्योंकि मुझे नहीं पता कि क्यों पेस्ट चीज़ लूप में है जब कुछ भी मुद्रित नहीं होता ??? – user1769197