답변을 검색하는 데 지출 한 시간이 있고 절망적 인 상황의 마지막 단계에서 오전 3시 15 분이므로이 기본 질문을 묻습니다 (정규식에 대해 아무것도 모르기 때문에).charchter 문자열의 첫 번째 점만 제외하십시오.
첫 번째 연속 점 이외의 모든 점을 바꿔야합니다. 감사 정규식으로이 문제를 해결하는 방법에 대한
> names.orig <- c("test & best", "test & worse &&&& ? do")
> names <- make.names(names.orig)
> names
[1] "test...best" "test...worse.........do"
>
> # But I want this instead:
> # [1] "test.best" "test.worse.do"
>
> # Desperatley tried:
> gsub("\\.{2, }", "", names)
[1] "testbest" "testworsedo"
> gsub("\\G((?!^).*?|[^\\.]*\\.*?)\\.", "", names)
Error in gsub("\\G((?!^).*?|[^\\.]*\\.*?)\\.", "", names) :
invalid regular expression '\G((?!^).*?|[^\.]*\.*?)\.', reason 'Invalid regexp'
> # etc.
>
> # The only thing that works for me is this
> unlist(lapply(strsplit(names, "\\."), function(x) paste(x[x != ""], collapse=".")))
[1] "test.best" "test.worse.do"
>
> # But, really, what is the right regex in combination with what?
어떤 힌트 : 여기에 내가 원하는 걸의 예입니다.
간단하게 교체 할 수 있습니다. 조슈아 덕분에 – Civa