मैं चाहता हूं कि आर एक वेक्टर को सबवेक्टर में विभाजित करे जिसमें प्रत्येक सबवेक्टर की लंबाई निर्दिष्ट हो।

अगर मेरे पास एक वेक्टर ts है जो 1 से 30 तक है, तो मैं इसे सबवेक्टर में विभाजित करना पसंद करता हूं, जिसमें सबवेक्टर की लंबाई 4 4 4 4 2 2 2 2 4 2 है।

ts<-1:30
t<-c(4 4 4 4 2 2 2 2 4 2)
split(ts, each=t) # divides the series into blocks

**परिणाम जो मुझे चाहिए**

# 1 2 3 4
#5 6 7 8
#9 10 11 12
#13 14 15 16
#17 18
#19 20
#20 22
#23 24
#25 26 27 28
#29 30
0
Daniel James 14 अक्टूबर 2019, 20:21

1 उत्तर

सबसे बढ़िया उत्तर

हम 't' वेक्टर और split 'ts' वेक्टर का उपयोग करके rep के साथ एक ग्रुपिंग इंडेक्स बनाते हैं

split(ts, rep(seq_along(t), t))
#$`1`
#[1] 1 2 3 4

#$`2`
#[1] 5 6 7 8

#$`3`
#[1]  9 10 11 12

#$`4`
#[1] 13 14 15 16

#$`5`
#[1] 17 18

#$`6`
#[1] 19 20

#$`7`
#[1] 21 22

#$`8`
#[1] 23 24

#$`9`
#[1] 25 26 27 28

#$`10`
#[1] 29 30

आंकड़े

ts <- 1:30
t <- c(4, 4, 4, 4, 2, 2, 2, 2, 4, 2)

नोट: ts और t दोनों फ़ंक्शन नाम हैं। किसी भिन्न नाम के साथ ऑब्जेक्ट नाम निर्दिष्ट करना बेहतर है

1
akrun 14 अक्टूबर 2019, 20:22