Tôi đoán đây là vấn đề phổ biến và tôi tìm thấy khá nhiều trang web, bao gồm một số từ SO, nhưng tôi không hiểu cách triển khai.REGEX trong R: trích xuất các từ từ một chuỗi
Tôi mới dùng REGEX và tôi muốn sử dụng nó trong R để trích xuất một vài từ đầu tiên từ một câu.
ví dụ, nếu câu của tôi là
z = "I love stack overflow it is such a cool site"
id muốn có đầu ra của tôi như là (nếu tôi cần bốn chữ đầu tiên)
[1] "I love stack overflow"
hoặc (nếu tôi cần cuối bốn Nói cách)
[1] "such a cool site"
tất nhiên, các công việc sau
paste(strsplit(z," ")[[1]][1:4],collapse=" ")
paste(strsplit(z," ")[[1]][7:10],collapse=" ")
nhưng tôi muốn thử một giải pháp regex cho vấn đề hiệu suất như tôi cần phải đối phó với các tập tin rất lớn (và cũng vì lợi ích của việc biết về nó)
Tôi nhìn một số liên kết, bao gồm Regex to extract first 3 words from a string và http://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html
vì vậy tôi cố gắng những thứ như
gsub("^((?:\S+\s+){2}\S+).*",z,perl=TRUE)
Error: '\S' is an unrecognized escape in character string starting ""^((?:\S"
tôi đã cố gắng cụ khác, nhưng nó thường trở lại tôi hoặc toàn bộ chuỗi hoặc chuỗi rỗng.
một vấn đề khác với chất nền là nó trả về một danh sách. có lẽ nó trông giống như các nhà điều hành [[]]
là làm chậm những thứ một chút (??) khi giao dịch với các tập tin lớn và làm công cụ áp dụng.
có vẻ như Cú pháp được sử dụng trong R hơi khác một chút? cảm ơn!
Bạn cần sử dụng thoát kép trong regex R. '\ S' ->' \\ S' –
Bạn cũng có thể thử 'stringi :: stri_extract_all_words (z) [[1]] [1: 4]' dễ sử dụng hơn và không đòi hỏi phải biết regex. Mặc dù bạn sẽ nhận được các từ một giá trị riêng biệt. –
Bạn không thể sử dụng cùng một ý tưởng mà tôi đã chia sẻ [trong câu hỏi trước đó của bạn] (http://stackoverflow.com/questions/33785594/manipulate-char-vectors-inside-a-data-table-object-in -r)? Bạn chỉ cần tăng gấp đôi các dấu gạch chéo ngược của bạn trong R, như đã được chỉ ra bởi @stribizhev. – A5C1D2H2I1M1N2O1R2T1