Saya ingin menghapus karakter tertentu dari string dalam vektor, mirip dengan fitur Temukan dan Ganti di Excel.
Berikut adalah data yang saya mulai dengan:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Saya mulai dengan hanya kolom pertama; Saya ingin menghasilkan kolom kedua dengan menghapus e
's:
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
fixed = TRUE
akan membuat ini lebih cepat.fixed=TRUE
mencegah R dari menggunakan ekspresi reguler, yang memungkinkan pencocokan pola yang lebih fleksibel tetapi membutuhkan waktu untuk menghitung. Jika semua yang diperlukan adalah menghapus satu string konstan "e", mereka tidak perlu.sub("e", "", group)
menghasilkan hasil yang sama?e
ditemukan di setiap elemenEkspresi reguler adalah teman Anda:
Sekarang gunakan
gsub()
dengan pola penggantian sesederhana mungkin: string kosong:sumber
require(stringr);group$groupNoE <- str_replace(group$group, "e", "")
str_replace
membungkussub
, jadi itu hanya akan menggantikan kemunculan pola yang pertama. Anda perlu menggunakanstr_replace_all
jika Anda menginginkan perilaku yang samagsub
.Meringkas 2 cara untuk mengganti string:
1) Gunakan
gsub
2) Gunakan
stringr
paketKeduanya akan menghasilkan output keinginan:
sumber
Anda tidak perlu membuat bingkai data dari vektor string, jika Anda ingin mengganti beberapa karakter di dalamnya. Ekspresi reguler adalah pilihan yang baik karena sudah disebutkan oleh @Andrie dan @Dirk Eddelbuettel.
Perhatikan, jika Anda ingin mengganti karakter khusus, seperti titik, Anda harus menggunakan sintaks ekspresi reguler penuh, seperti yang ditunjukkan dalam contoh di bawah ini:
ini akan menghasilkan
sumber
gsub("\\.", " ", ctr_names)
Gunakan paket stringi :
sumber
sumber