Trong R, grep thường khớp với vectơ của nhiều chuỗi dựa vào một regexp.R grep: Ghép một chuỗi với nhiều mẫu
Hỏi: Có khả năng khớp một chuỗi đơn với nhiều regexps không? (không lặp qua từng mẫu regexp đơn)?
Một số nền:
Tôi có 7000+ từ khóa như các chỉ số cho một số chuyên mục. Tôi không thể thay đổi từ điển từ khóa đó. Từ điển có cấu trúc sau (các từ khóa trong col 1, các con số cho thấy các danh mục mà các từ khóa này thuộc về):
ab 10 37 41
abbrach* 38
abbreche 39
abbrich* 39
abend* 37
abendessen* 60 63
aber 20 23 45
abermals 37
Ghép nhiều từ khóa bằng "|" không phải là cách khả thi (và tôi sẽ không biết từ khóa nào tạo ra lần truy cập). Ngoài ra, chỉ cần đảo ngược "mẫu" và "chuỗi" không hoạt động, vì các mẫu có cắt cụt, sẽ không hoạt động theo cách khác.
[related question, ngôn ngữ lập trình khác]
tôi như đề xuất của dan nhưng với một tập dữ liệu lớn, bạn có thể gặp phải một số vấn đề tốc độ đáng kể. Nếu bạn muốn tìm một cái gì đó trong một từ điển và trả về một giá trị tương ứng, tôi sẽ đề xuất một cách tiếp cận khác: Chia các câu thành vectơ của các từ riêng lẻ với strsplit và sau đó áp dụng một bảng băm để tra cứu nhanh. Tôi nghĩ rằng bạn có thể muốn ngắt từ khóa và các chỉ mục danh mục thành hai cột riêng biệt trong từ điển. Tôi sẽ cung cấp hỗ trợ ở đó nhưng chỉ sau khi bạn rõ ràng hơn về muốn là kết quả cuối cùng. –
Đồng ý về việc tái cơ cấu dữ liệu từ điển và sử dụng bảng băm để tra cứu (tùy thuộc vào kết quả mong muốn), nhưng kết quả khớp sẽ tương đối nhanh tùy thuộc vào số lượng chuỗi, ngay cả với số lượng từ khóa lớn. Tôi sẽ thêm điểm chuẩn nhanh vào câu trả lời của mình. – danpelota
Nếu bạn thực sự có nhiều từ (thông thường, tất cả các từ trong ngôn ngữ của con người, tất cả các từ được Google lập chỉ mục, v.v.), bạn có thể sử dụng [cây tiền tố] (http: // vi. wikipedia.org/wiki/Trie) (đôi khi còn được gọi là "trie"). Nhưng tôi không biết thực hiện bất kỳ trong R. –