2013-06-11 6 views
1

에 추출합니다. 폴더에있는 모든 데이터 파일을 열고, 관심있는 데이터를 추출하는 함수 (또는 함수 집합)를 적용하는 코드를 작성하려고합니다. 여태까지는 그런대로 잘됐다. 문제는 파일 이름의 한 요소를 사용하여 각 파일에서 추출한 열 중 하나의 이름을 다시 지정하고이를 추출하는 방법을 파악하는 데 어려움을 겪고 있다는 것입니다.파일 이름의 일부를 R

"YYYY-MM-DD geneName data copy.txt"라는 파일이 있는데 파일 이름의 "geneName"부분을 추출하고 싶습니다. 예를 들어 "2012-05-31 PMA1 data copy.txt"가 있습니다.

날짜 형식은 항상 (YYYY-MM-DD) 동일하며 모든 파일 이름은 "데이터 복사본"으로 끝납니다. txt ".

또한 일부 파일 이름에는 날짜와 geneName 사이의 파일 이름에 추가 실험 주석 ("E (숫자)"또는 "Expt (번호)")이 있습니다 (예 : "2012-05- 21 E7 PMA1 데이터 copy.txt "); 다른 사람은 geneName과 "data copy.txt"사이에 "SDM"을가집니다.

  • 2012-05-31 CTN1 데이터 copy.txt (나는 "CTN1을 원하는)
  • 2012-05-21 E7 PMA1 데이터 복사 : 여기

    는 일부 파일 이름과 내 원하는 출력의 목록입니다 .txt를
("POX1"를 원하는) ("TDH3"를 원하는)
  • 2012-01-04 POX1 데이터를 copy.txt
  • 2011-11-29 TDH3 SDM 데이터 copy.txt ("PMA1"를 원하는)

    내가 어떻게 손으로 일부 파일에서 실험 번호 또는 "SDM"을 삭제하지 않고도 그 작업을 수행 할 수 있습니까?

    감사합니다.

  • 답변

    3

    여기 패턴은 원하지 않는 E \ digit 또는 Expt \ digit (선택 사항), 원하는 단어, 데이터 복사가 필요없는 선택적 SDM입니다. 여기

    > names 
    [1] "2012-05-31 CTN1 data copy.txt"   
    [2] "2012-05-21 E7 PMA1 data copy.txt"  
    [3] "2011-11-29 TDH3 SDM data copy.txt"  
    [4] "2012-01-04 POX1 data copy.txt"   
    [5] "2011-11-29 ECHO data copy.txt"   
    [6] "2011-11-29 E8 ECHO data copy.txt"  
    [7] "2011-11-29 ECHO SDM data copy.txt"  
    [8] "2011-11-29 Expt2 ECHO SDM data copy.txt" 
    

    내이 sub 것 :

    귀하의 E-접두사가 하나 개 이상의 자리가
    > sub(pattern="^....-..-.. (E\\d+ |Expt\\d+)*(\\w+) (SDM)*data copy.txt","\\2",names) 
    [1] "CTN1" "PMA1" "TDH3" "POX1" "ECHO" "ECHO" "ECHO" "ECHO" 
    

    경우,이 또한 작동 TXT '...

    여기 내 테스트 데이터입니다. 나는 E으로 시작하는 테스트 세트에 몇 가지를 추가하여 올바르게 처리되었는지 확인하고, 전자 접두어 인 SDM을 사용했다.

    +0

    완벽한, 감사합니다! 나는 이것을 할 수있는 방법이 있음을 알았고, 나는 여전히 R에 충분히 새롭다. 나는 논점을 어떻게 지정하는지를 정말로 고심하고 있었다. 사용하는 함수는 ... 나를 도와 주려고 시간을내어 주셔서 고맙다. 분명한 답을 제시하십시오. 문제를 해결하고 미래의 다른 우발 상황 및 기타 문제에 대해이 전략이 어떻게 수정 될 수 있는지 보여줍니다. – phosphorelated

    +1

    이러한 패턴 일치 문자열은 '정규식'또는 'regexps'라고하며 많은 프로그래밍 언어에서 찾을 수 있으므로 더 많이 알고 싶다면 무엇을 Google에 알릴 수 있습니다! – Spacedman

    관련 문제