2017-05-17 2 views
0

데이터 세트 blahkw이 있습니다. 수만 줄의 문자열이 있으며 그 중 일부는 문장 길이입니다. 대체 문자열의 대다수를 이미 for 루프로 대체하여 하위 문자열을 하위 문자열 범주로 대체했습니다. 그러나, 대체해야 할 부분 문자열을 모두 생각할 수는 없습니다. 대부분의 무거워 짐 작업이 완료되었지만 가장자리 케이스가 많아서 발생했을 때이를 처리하고 싶습니다.oldstring을 허용하고, 데이터 프레임 열을 검색하고, newstring으로 바꾸는 사용자 정의 함수를 작성합니다.

cleanup 내가 oldsubstring과 newsubstring을 전달할 수있는 함수를 만들고 싶습니다.이 함수는 news substring이있는 blah$kw의 oldsubstring 인스턴스를 바꿉니다. - R.에 미안 아주 새로운하지만 일회성 오프를 근거로하고

cleanup <- function(oldstring, 
        newstring) { 
      blah$kw[grepl(oldstring, 
         blah$kw)] <- sapply(blah$kw[grepl(oldstring, 
                  blah$kw)], 
              function(x) gsub(oldstring, 
                   newstring, 
                   x)) 
} 

이 바보 보일 수 있습니다, 나는 아무 생각이 : 여기

내가 지금까지 쓴거야 찾은 코드는 다음과 같습니다.

blah$kw[grepl(oldstring, 
       blah$kw)] <- sapply(blah$kw[grepl("oldstring", 
               blah$kw)], 
            function(x) gsub("oldstring", 
                "newstring", 
                x)) 
} 

그리고 매력처럼 작동합니다. 어쨌든, 어떤 도움이 큰 것입니다. 감사!

답변

0

일반적으로 함수에 데이터 세트를 하드 코딩하지 않고 변수로 전달하지 않는 것이 가장 좋습니다. 당신이 찾고있는 참고

cleanup <- function(df1, oldstring, newstring) { 
    df1[grepl(oldstring, df1)] <- gsub(oldstring, newstring, df1[grepl(oldstring, df1)]) 
    df1 
} 

blah$bw <- cleanup(blah$bw, "a", "y") 

부분 집합

를 통해 수행 할 수 있습니다 :이 멋지게 그것을 다룰 것처럼 문자열 요인으로

+0

감사 남자를 저장하는 경우이 작동하지 않습니다,이 보인다! 그리고 hardcoding에 대한 팁을 주셔서 감사합니다. – mowshowitz

관련 문제