Bagaimana saya bisa mendapatkan n karakter terakhir dari string dalam R? Apakah ada fungsi seperti SQL's RIGHT?
271
Saya tidak mengetahui apa pun di basis R, tetapi langsung membuat fungsi untuk melakukan ini menggunakan substr
dan nchar
:
x <- "some text in a string"
substrRight <- function(x, n){
substr(x, nchar(x)-n+1, nchar(x))
}
substrRight(x, 6)
[1] "string"
substrRight(x, 8)
[1] "a string"
Ini di-vectorised, seperti yang ditunjukkan oleh @mdsumner. Mempertimbangkan:
x <- c("some text in a string", "I really need to learn how to count")
substrRight(x, 6)
[1] "string" " count"
nchar(x)
dua kali dengan menugaskannya ke variabel lokal?Jika Anda tidak keberatan menggunakan
stringr
paket,str_sub
berguna karena Anda dapat menggunakan negatif untuk menghitung mundur:Atau, seperti yang Max tunjukkan dalam komentar untuk jawaban ini,
sumber
stringr
telah dibuat ulangstringi
sebagai backend, jadi harus bekerja dengan NAS dll sekarang.Gunakan
stri_sub
fungsi daristringi
paket. Untuk mendapatkan substring dari akhir, gunakan angka negatif. Lihat contoh di bawah ini:Anda dapat menginstal paket ini dari github: https://github.com/Rexamine/stringi
Ini tersedia di CRAN sekarang, cukup ketik
untuk menginstal paket ini.
sumber
sumber
Cara lain yang cukup mudah adalah dengan menggunakan ekspresi reguler dan
sub
:Jadi, "singkirkan semuanya diikuti oleh satu karakter". Untuk mengambil lebih banyak karakter dari akhir, tambahkan namun banyak titik di pernyataan lookahead:
di mana
.{2}
berarti..
, atau "setiap dua karakter", jadi artinya "singkirkan semuanya diikuti oleh dua karakter".untuk tiga karakter, dll. Anda dapat mengatur jumlah karakter untuk diambil dengan variabel, tetapi Anda harus
paste
nilai variabel ke dalam string ekspresi reguler:sumber
regmatches(x, regexpr(".{6}$", x))
UPDATE : seperti dicatat oleh mdsumner , kode asli sudah di-vectorised karena substr adalah. Seharusnya lebih hati-hati.
Dan jika Anda menginginkan versi vektor (berdasarkan kode Andrie )
Perhatikan bahwa saya telah berubah
(nchar(x)-n)
untuk(nchar(x)-n+1)
mendapatkann
karakter.sumber
(nchar(x)-n)
untuk(nchar(x)-n+1)
"Solusi dasar R sederhana menggunakan
substring()
fungsi (siapa yang tahu fungsi ini bahkan ada?):Ini pada dasarnya mengambil keuntungan di
substr()
bawah tetapi memiliki nilai akhir default 1.000.000.Contoh:
sumber
Alternatif untuk
substr
membagi string menjadi daftar karakter tunggal dan proses itu:sumber
Saya menggunakan
substr
juga, tetapi dengan cara yang berbeda. Saya ingin mengekstrak 6 karakter terakhir dari "Beri saya makanan Anda." Berikut langkah-langkahnya:(1) Membagi karakter
(2) Ekstrak 6 karakter terakhir
Keluaran:
Setiap karakter dapat diakses oleh
splits[[1]][x]
, di mana x adalah 1 hingga 6.sumber
seseorang sebelum menggunakan solusi serupa dengan saya, tetapi saya merasa lebih mudah untuk berpikir seperti di bawah ini:
Ini akan membawa karakter terakhir seperti yang diinginkan.
sumber
Coba ini:
Harus memberi:
sumber
Saya menggunakan kode berikut untuk mendapatkan karakter terakhir dari sebuah string.
Anda dapat bermain dengan nchar (stringOfInterest) untuk mengetahui cara mendapatkan beberapa karakter terakhir.
sumber
Sedikit modifikasi pada solusi @Andrie juga memberikan pelengkap:
Itulah yang saya cari. Dan itu mengundang ke sisi kiri:
sumber
Untuk jaga-jaga jika berbagai karakter perlu dipilih:
sumber