एसओ (LINK) पर एक प्रश्न में एक पोस्टर ने एक प्रश्न पूछा और मैंने एक जवाब दिया जो काम करता है लेकिन एक ऐसा हिस्सा है जो मुझे बग करता है, एक वेक्टर से list
को सूची के रूप में पास करने के लिए बनाता है सूचकांक तो लेस कहते हैं कि मैं इस सदिश है:बराबर लंबाई वाले वैक्टरों की एक सूची बनाएं
n <- 1:10
#> n
# [1] 1 2 3 4 5 6 7 8 9 10
चलो कहते हैं कि मैं इसे तोड़ने के लिए वैक्टर की एक सूची में चाहते हैं और प्रत्येक वेक्टर लंबाई 3. क्या सबसे अच्छा तरीका (कोड & या सबसे तेजी से कम से कम राशि) है की है इसे पूरा करो? हम आइटम 10 को टॉस करना चाहते हैं क्योंकि इसमें 10/3 (length(n) - 10 %% 3
) से शेष 1 (10 %% 3
) है।
यह वांछित परिणाम है
list(1:3, 4:6, 7:9)
यह हमें उन के सूचकांकों कि तीन में से एक समूह नहीं कर सकते हैं दे देंगे:
(length(n) + 1 - 10 %% 3):length(n)
संपादित
यहाँ एक है other thread पर वोज्शिएक सोबाला द्वारा पोस्ट किया गया दिलचस्प दृष्टिकोण यह जुड़ा हुआ है (मैंने उनसे जवाब देने के लिए कहा और यदि वे करते हैं तो मैं टी को हटा दूंगा उसके संपादित)
n <- 100
l <- 3
n2 <- n - (n %% l)
split(1:n2, rep(1:n2, each=l, length=n2))
एक समारोह के रूप में:
indices <- function(n, l){
if(n > l) stop("n needs to be smaller than or equal to l")
n2 <- n - (n %% l)
cat("numbers", (n + 1 - n %% l):n, "did not make an index of length", l)
split(1:n2, rep(1:n2, each=l, length=n2))
}
सभी महान जवाब लेकिन मुझे लगता है एक्स , वह सबसे छोटा कोड-वार है। धन्यवाद, वह मुझे परेशान कर रहा था। मैं जो कर रहा था उससे कहीं ज्यादा बेहतर दृष्टिकोण। –