2013-05-21 1 views
1

을 grepl 기능에 변수를 사용하는 방법 나는 등으로부터 데이터가 있습니다내가 루프와 grepl 기능 몇 가지 문제를 가지고 R 새로운 오전과 내 루프-R

str(peptidesFilter) 
    'data.frame': 78389 obs. of 130 variables: 
$ Sequence      : chr "AAAAAIGGR" "AAAAAIGGRPNYYGNEGGR" "AAAAASSNPGGGPEMVR" "AAAAAVGGR" ... 
$ First.amino.acid    : chr "A" "A" "A" "A" ... 
$ Protein.group.IDs    : chr "1" "1;2;4" "2;5 "3" "4;80" ... 

내가 필터링 할을

peptidesFilter.new <- peptidesFilter[grepl('(^|;)2($|;)', 
peptidesFilter$Protein.group.IDs),] 

이하 grepl 함수를 사용하여 데이터에 따른 I $ Protein.group.IDs는 모든 개인 데이터에 대한 루프 (예를 들어 1, 2, 3 등) 다시 그것을 수행 할 변수 펩타이드를 포함하는 데이터 프레임의 이름을 기록합니다 .Filter.i

i =1 
    while(i <= N) { peptidesFilter.[[i]] <- 
    peptidesFilter[grepl('(^|;)i($|;)', 
    peptidesFilter$Protein.group.IDs),] 
    i=i+1 } 

나는 두 가지 문제 변수로 인식되지 않는 grep1 함수 메인 하나 난이 난 방법을 다시 이름은 변수를 포함하는 방법으로 데이터를 여과 하였다.

어떤 아이디어가 있습니까? grepl 문제에 대한

답변

1

당신은 예를 들어 paste0를 사용할 수 있습니다

paste0('(^|;)',i,'($|;)') 

를 루프를 들어, 그래서 이런 식으로 뭔가 할 수

ll <- lapply(seq(1:4),function(x) 
     peptidesFilter[grepl(paste0('(^|;)',x,'($|;)'), 
          peptidesFilter$Protein.group.IDs),]) 

는 당신은 data.frame로 변환 할 수 있습니다 :

do.call(rbind,ll) 

      Sequence First.amino.acid Protein.group.IDs 
1   AAAAAIGGR    A     1 
2 AAAAAIGGRPNYYGNEGGR    A    1;2;4 
21 AAAAAIGGRPNYYGNEGGR    A    1;2;4 
3 AAAAASSNPGGGPEMVR    A    2;5 
4   AAAAAVGGR    A     3 
22 AAAAAIGGRPNYYGNEGGR    A    1;2;4 
+0

감사합니다. grep1 문제를 해결하기 위해 paste ('(^ |;)', i, '($ |;)')를 사용했습니다. 기본적으로 ID를 기반으로 데이터를 분할 한 다음 각 분할 데이터를 추가로 처리하려고합니다. 예를 들면 seqeunce 정보. do.call (rbind, ll), 모든 데이터를 다시 결합했습니다. x = 1, x = 2 등일 때 개별 데이터 프레임 (예 : peptidesFilterx1, peptidesFilterx2 등)을 만들 수 있습니까? 아니면 내가 잘못 이해 했습니까? – Samir

+0

@Samir 목록은 내가 원하는 것입니다. – agstudy

+0

죄송합니다, 지금 알았습니다. 고마워요. – Samir

관련 문제