2016-09-06 2 views
2

이 벡터의 이름은 myvec입니다. 첫 번째 구분 기호 _ 앞에 모든 내용을 삭제하고 마지막 구분 기호 _ (delimeter 포함) 다음을 모두 삭제하려고합니다. result을 얻으려면 어떻게해야합니까?일치하는 패턴 또는 구분 기호 앞에 첫 번째 항목과 마지막 항목을 삭제하는 방법 R

myvec <- c("contamination_LPH-001-10_3.txt", "contamination_LPH-001-10_AK1_0.txt", 
"contamination_LPH-001-10_AK2_1.txt", "contamination_LPH-001-10_PD_2.txt", 
"contamination_LPH-001-10_SCC_4.txt") 

결과 :

LPH-001-10, LPH-001-10_AK1,LPH-001-10_AK2,LPH-001-10_PD,LPH-001-10_SCC 

답변

3

우리는 문자열의 시작 (^)에서이

gsub("^[^_]*_|_[^_]*$", "", myvec) 
#[1] "LPH-001-10"  "LPH-001-10_AK1" "LPH-001-10_AK2" 
#[4] "LPH-001-10_PD" "LPH-001-10_SCC" 

에 대한 gsub을 사용할 수 있습니다, 우리는이 아닌입니다 0 개 이상의 문자와 일치하는 _ ([^_]*) 다음에 _ 또는 (|)가 _에 이어 ze ro 또는 _ ([^_]*)까지 문자열의 끝 ($)까지 나오지 않고 ""으로 바꾸십시오.


또는 우리는 또한 캡처 그룹 ((...))를 사용하여 캡처 그룹에 대한 역 참조로 대체 할 수 있습니다.

sub("^[^_]*_(.*)_[^_]*$", "\\1", myvec) 
#[1] "LPH-001-10"  "LPH-001-10_AK1" "LPH-001-10_AK2" 
#[4] "LPH-001-10_PD" "LPH-001-10_SCC" 
관련 문제