Saya memiliki data yang terlihat seperti ini:
vector = c("hello I like to code hello","Coding is fun", "fun fun fun")
Saya ingin menghapus kata-kata duplikat (ruang terbatas) yaitu output akan terlihat seperti
vector_cleaned
[1] "hello I like to code"
[2] "coding is fun"
[3] "fun"
Membaginya (strsplit
pada spasi), gunakan unique
(di lapply
), dan paste
kembali bersama:
vapply(lapply(strsplit(vector, " "), unique), paste, character(1L), collapse = " ")
# [1] "hello i like to code" "coding is fun" "fun"
## OR
vapply(strsplit(vector, " "), function(x) paste(unique(x), collapse = " "), character(1L))
Perbarui berdasarkan komentar
Anda selalu dapat menulis fungsi kustom untuk digunakan dengan Anda vapply
fungsi. Sebagai contoh, inilah fungsi yang mengambil string terpisah, menjatuhkan string yang lebih pendek dari sejumlah karakter tertentu, dan memiliki pengaturan "unik" sebagai pilihan pengguna.
myFun <- function(x, minLen = 3, onlyUnique = TRUE) {
a <- if (isTRUE(onlyUnique)) unique(x) else x
paste(a[nchar(a) > minLen], collapse = " ")
}
Bandingkan hasil dari yang berikut ini untuk melihat bagaimana hasilnya.
vapply(strsplit(vector, " "), myFun, character(1L))
vapply(strsplit(vector, " "), myFun, character(1L), onlyUnique = FALSE)
vapply(strsplit(vector, " "), myFun, character(1L), minLen = 0)