Bu yaygın bir sorundur ve bazı SO'lar da dahil olmak üzere pek çok web sayfası buldum, ancak nasıl uygulanacağını anlayamadım.REGEX in R: bir dizgeden bir sözcük ayıklamak
REGEX için yeni ve bir cümleyle ilk birkaç kelimeyi ayıklamak için R'de kullanmak istiyorum.
örneğin benim cümle (i ilk dört kelime gerekiyorsa) i son dört gerekirse
z = "I love stack overflow it is such a cool site"
id (varlık olarak benim çıkış olması
[1] "I love stack overflow"
veya ister ise kelime) elbette
[1] "such a cool site"
aşağıdaki işleri
paste(strsplit(z," ")[[1]][1:4],collapse=" ")
paste(strsplit(z," ")[[1]][7:10],collapse=" ")
ama çok büyük dosyaları ile uğraşmak gerekir olarak i performans sorunları için regex çözüm denemek istiyorum (ve ayrıca bu konuda bilmeden uğruna) Ben dahil olmak üzere birçok bağlantılar baktı
Regex to extract first 3 words from a string ve http://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in-a-string.html
yüzden ben başka şeyler denedik ama genellikle beni ya bütün dize döndürdü
gsub("^((?:\S+\s+){2}\S+).*",z,perl=TRUE)
Error: '\S' is an unrecognized escape in character string starting ""^((?:\S"
gibi şeyler denedik veya boş dize. Substr ile ilgili başka bir sorun, bir liste döndürmesidir. [[]]
operatörünün büyük dosyalar ile uğraşırken bazı şeyleri yavaşladığını ve bazı şeyleri uyguladığını görebilirsiniz.
R'de kullanılan sözdizimi biraz farklı görünüyor mu? teşekkürler!
R regex'te çift çıkışları kullanmanız gerekir. '\ S' ->' \\ S' –
Ayrıca, stringi :: stri_extract_all_words (z) [[1]] [1: 4] 'i de kullanabilirsiniz ve kullanımı daha kolaydır ve normal ifadeleri bilmesi gerekmez. Yine de kelimeleri ayrı bir değer elde edeceksiniz. –
Sadece [önceki sorunuzda] paylaştığım aynı fikri kullanamazdınız (http://stackoverflow.com/questions/33785594/manipulate-char-vectors-inside-a-data-table-object-in -r)? Sadece @stribizhev tarafından işaret edildiği gibi, R'deki ters eğik çizgileri iki katına çıkarmanız gerekir. – A5C1D2H2I1M1N2O1R2T1