Saya ingin membuat vektor di mana setiap elemen adalah i+6th
elemen dari vektor lain.
Misalnya, dalam vektor dengan panjang 120, saya ingin membuat vektor panjang 20 di mana setiap elemen adalah nilai i, i+6, i+12, i+18...
dari vektor awal, yaitu saya ingin mengekstrak setiap elemen ke-6 dari dokumen asli.
seq.int
lebih cepat dalam microbenchmark, tapi saya menduga bahwa setiap peningkatan kinerja dalam program yang sebenarnya akan dikerdilkan oleh waktu berjalan bagian lain.a = 1:120; b = [::6]
. Python tidak bisa melakukan yang pertama, R bukan yang terakhir.Trik lain untuk mendapatkan potongan sekuensial (di luar solusi seq yang telah disebutkan) adalah menggunakan vektor logis pendek dan menggunakan daur ulang vektor:
sumber
seq
Anda harus dapat memanggillength
vektor.letters[letters < 'm'][c(TRUE, FALSE, FALSE)]
Saya pikir Anda menanyakan dua hal yang belum tentu sama
Anda dapat melakukan ini dengan mengindeks urutan:
Cara mudah untuk melakukan ini adalah menambah faktor logis dengan SALAH sampai
i+6
:sumber
foo[1:(i+6)!=(i+6)]
yaitu output semua nilai kecuali keenam.Untuk memilih setiap elemen ke-n dari setiap posisi awal dalam vektor
sumber