2017-12-22 6 views
0

데이터 프레임에 "mutation"이라는 열이 있습니다. 그들은 "C> A"와 같은 SNP, "+ TTTAAG"와 같은 삽입 또는 "-CTTGA"와 같은 삭제 일 수 있습니다. 예를 들어 : - 각각 "SNP", "삽입"또는 "삭제"를 쓰기로데이터 프레임의 다른 문자 벡터를 기반으로하는 조건부 대체 벡터

**position** **mutation** 
1234   C > A 
1452   +TTTAAG 
2734   -CTTGA 

나는 R 돌연변이 열에서 특정 문자 ("", ">", "+"또는) 검색 할

mutation_type <- rep(NA, length(df$position))) 
df$mutation_type <- mutation_type #creating a new column with NAs 

노력 :

**position** **mutation** **mutation_type** 
1234   C > A    SNP 
1452   +TTTAAG   insertion 
2734   -CTTGA   deletion 

나는 다음과 같은 물건을하려고 노력 : dataframe에 새 열은, 그래서 그 결과 다음과 같은 기대

while(grep(pattern = "-", df$mutation)){ 
    df$mutation_type <- "deletion" 
} 

은 mutation_type 열의 모든 셀을 덮어 씁니다. 이 문제를 해결하는 방법에 대해 조언 해 주시겠습니까? grepifelse를 사용하여

답변

2

솔루션 :

genotype <- data.frame(position = 1:3, 
         mutation = c("C > A", "+TGCA", "-ACGT")) 
genotype$mutation_type <- 
    ifelse(grepl("\\+", genotype$mutation), "Insertion", 
      ifelse(grepl("\\-", genotype$mutation), "Deletion", "SNP")) 

    position mutation mutation_type 
1  1 C > A   SNP 
2  2 +TGCA  Insertion 
3  3 -ACGT  Deletion 
+1

당신을 감사합니다, 완벽하게 작동합니다! – makkreker

+0

@makkreker 문제를 해결하는 데 도움이된다면 내 대답을 수락 할 수 있습니다. – PoGibas

관련 문제