ฉันจะจัดเรียงอักขระของแต่ละสตริงอย่างมีประสิทธิภาพได้อย่างไรในเวกเตอร์ ตัวอย่างเช่นกำหนดเวกเตอร์ของสตริง:
set.seed(1)
strings <- c(do.call(paste0, replicate(4, sample(LETTERS, 10000, TRUE), FALSE)),
do.call(paste0, replicate(3, sample(LETTERS, 10000, TRUE), FALSE)),
do.call(paste0, replicate(2, sample(LETTERS, 10000, TRUE), FALSE)))
ฉันได้เขียนฟังก์ชันที่จะแยกแต่ละสตริงเป็นเวกเตอร์เรียงลำดับเวกเตอร์แล้วยุบผลลัพธ์:
sort_cat <- function(strings){
tmp <- strsplit(strings, split="")
tmp <- lapply(tmp, sort)
tmp <- lapply(tmp, paste0, collapse = "")
tmp <- unlist(tmp)
return(tmp)
}
sorted_strings <- sort_cat(strings)
อย่างไรก็ตามเวกเตอร์ของสตริงที่ฉันต้องการใช้กับมันยาวมากและฟังก์ชั่นนี้ช้าเกินไป ไม่มีใครมีคำแนะนำสำหรับวิธีการปรับปรุงประสิทธิภาพหรือไม่
letters
ไม่ได้เสมอของความยาวสามในขณะที่ตัวอย่างของพวกเขา?
fixed = TRUE
ในstrsplit()
อาจช่วยปรับปรุงประสิทธิภาพในขณะที่มันจะไม่เกี่ยวข้องกับการใช้ regex ไม่