je le vecteur suivant Vec
: ACGTTGCA
et voudrait le diviser en un vecteur imbriqué, dans lequel les positions i-ième, il y aura un sous-segment de Vec
de longueur 4, à partir du i-ème position de Vec
.Dividing vecteur de caractères en segments
Par exemple, Vec[(⍳¯3+⍴Vec)∘.+¯1+⍳4]
retours:
ACGT
CGTT
GTTG
TTGC
TGCA
Mais le problème avec la sortie ci-dessus est qu'il est une matrice de caractère, alors que je voudrais obtenir la sortie suivante:
┌──────────────────────────┐
│┌────┬────┬────┬────┬────┐│
││ACGT│CGTT│GTTG│TTGC│TGCA││
│└────┴────┴────┴────┴────┘│
└──────────────────────────┘
Pour la chaîne suivante: vec←'Hy, only testing segmenting vec into pieces of 4'
le bon résultat de ce que je cherchais serait:
┌→────────────────────────────────────────┐
│ ┌→───┐ ┌→───┐ ┌→───┐ ┌→───┐ │
│ │Hy, │ │y, o│ │, on│ │ onl│ (and so on) │
│ └────┘ └────┘ └────┘ └────┘ │
└∊────────────────────────────────────────┘
De même, existe-t-il un moyen pour convertir un tel vecteur en un seul vecteur, dans lequel les lignes suivantes contiendraient 4 caractères?
Exemple: pour un vecteur de caractère foobartesting
le résultat serait:
foob
ooba
obar
bart
arte
rtes
test
esti
stin
ting
Merci, je savais qu'il devait y avoir une solution plus facile (et plus rapide). – syntagma
BTW, est-il un moyen de faire la même chose, à savoir créer un seul vecteur ressemblant à ça: 'foob \ nooba \ nobar \ n (...) \ nting' (édité ma question pour montrer ce que je demande) ? – syntagma
Utilisez simplement le mon monadique. Cela prendra une liste de tableaux et en créera un tableau à deux dimensions. I.e, simplement faire '⊃ 4,/'foobartesting' devrait le faire. Je ne sais pas si je devrais mettre à jour la réponse pour couvrir cela? –