I ' m R 데이터 프레임에서 열에 저장된 작은 문자열 (1 ~ 3 자)을 정리합니다. 특히, 다음 R 스크립트를 가정 : 첫 번째 필터 (^|\\s)[A-Z]{1,2}($|\\s)
는 세 번째의 첫 번째 행 또는 "YZ"의 "H"를 대체하지 않는 이유
df = data.frame("original" = c("ABCDE FG H",
"IJKL MN OPQRS",
"TUV WX YZ AAAA"))
df$filter1 = gsub("(^|\\s)[A-Z]{1,2}($|\\s)", " ", df$original)
df$filter2 = gsub("\\b[A-Z]{1,2}\\b", " ", df$original)
> df
original | filter1 | filter2 |
1 ABCDE FG H | ABCDE H | ABCDE |
2 IJKL MN OPQRS | IJKL OPQRS | IJKL OPQRS|
3 TUV WX YZ AAAA | TUV YZ AAAA| TUV AAAA |
내가 이해가 안 돼요. 나는 필터 (filter2 컬럼)로 \\b[A-Z]{1,2}\\b
을 사용하는 것과 같은 결과를 기대할 것이다. 여러 개의 공백에 대해 걱정하지 마시고, 저에게 중요하지 않습니다 (이것이 문제가되지 않는 한 :)).
> gsub("A", "X", "AAAABBBBCCCDDDDAAAAAAAEEE")
[1] "XXXXBBBBCCCDDDDXXXXXXXEEE"
:
나는 문제가 그 첫 번째는 두 번째를 대체하지 찾은 경우는,하지만 난 다음 교체 할 경우는 TRUE 아니라고, 작업의 "세계 성"이라고 생각
그래서 결과가 다른 이유는 무엇입니까?
감사합니다. 완벽하게 작동합니다. 내가 잘 이해하면 각 단계에서 대체가 이루어 지므로 각 검색에서 전체 문자열을 고려해야한다고 생각하는 것이 필요합니다. 그렇지 않습니까? 다시 감사합니다. – Amanda
아니요, 요점은'gsub'는 * 중첩되지 않는 * 문자열에만 일치 할 수 있다는 것입니다. "FG"는 첫 번째 예상 경기이고 "H"는 두 번째 경기입니다. 이러한 문자열이 겹치는 것을 볼 수 있습니다. 나는 대답의 맨 위에 설명을 업데이트했다. –
감사합니다. 정말 고마워요. – Amanda