हम एक सरणी है कि इस तरह दिखता है प्राप्त करना चाहते हैं दोहरा:एक दोहराया अनुक्रम
1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4
यह करने के लिए सबसे आसान तरीका क्या है?
हम एक सरणी है कि इस तरह दिखता है प्राप्त करना चाहते हैं दोहरा:एक दोहराया अनुक्रम
1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4,1,1,1,2,2,2,3,3,3,4,4,4
यह करने के लिए सबसे आसान तरीका क्या है?
आप एक ही rep
कॉल के साथ ऐसा कर सकते हैं। each
और times
पैरामीटर का मूल्यांकन क्रमशः each
के साथ किया जा रहा है।
rep(1:4, times=3, each=3)
#[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4
यह मेरे विचार में स्वीकृत उत्तर होना चाहिए – Andrie
इस तरह:
rep(sapply(1:4, function(x) {rep(x, 3)}), 3)
प्रतिनिधि (एक्स, एन) एक वेक्टर x एन बार पुन: दोहरा देता है। सदिश रूप से वेक्टर 1: 4 के प्रत्येक तत्व को दिया गया फ़ंक्शन लागू करता है, प्रत्येक तत्व को लगातार 3 बार दोहराता है।
आपको डाइटर के उत्तर पर एक नज़र डालना चाहिए - 'प्रत्येक' पैरामीटर ऐसा करेगा जो आप कॉल करने के लिए कॉल का उपयोग करने से बहुत अच्छा कर रहे हैं। – Dason
या, सरल (यह मानते हुए आप एक वेक्टर, नहीं एक सरणी मतलब)
rep(rep(1:4,each=3),3)
aperm
के साथ सरणी हेरफेर का उपयोग करने का एक तरीका यहां दिया गया है। विचार मूल्य युक्त एक सरणी बनाना है। उन्हें पुनर्व्यवस्थित करें ताकि वे aperm
का उपयोग करके वांछित आउटपुट से मेल खाते हों, और फिर c
के साथ सरणी को "प्रकट" करें।
c(aperm(array(1:4, dim=c(4,3,3)), c(2, 1, 3)))
[1] 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4
यह लूप के बारे में सोचा, लेकिन क्या कोई आसान तरीका नहीं है? –