두 데이터 프레임 SCR 및 matchedSCR이 있습니다. 그들은 각각 단백질 표제에 대한 목록을 포함하고 있습니다. matchedSCR은 SCR에서 직접 생성 된 SCR의 하위 집합입니다. matchingSCR 단백질 표제의 문자열은 SCR의 해당 표제와 동일해야하며이를 연결하는 색인으로 사용할 수 있어야합니다. 그러나 레코드를 일치 시키려고 할 때 사용하는 방법에 관계없이 일치하는 부분은 적습니다. 다음은 모두 17000 레코드 여야하는 약 6000 일치합니다.두 개의 목록에서 문자열을 일치시키는 데 예기치 않은 오류가 발생했습니다.
subset(SCR, (SCR$MESH_HEADING %in% matchedSCR$Heading))
SCR[SCR$MESH_HEADING %in% matchedSCR$Heading, ]
sqldf("select * from SCR join matchedSCR on SCR.MESH_HEADING=matchedSCR.Heading")
실망스러운 것은 내가 누락 된 행을 찾아 손으로 찾을 수 있다는 것입니다! SCR 거의 정확하게 같은 방법으로 만들어 다른 부분 집합 dataframe, orthologSCR에 SCR 일치
if(SCR$MESH_HEADING[64] == matchedSCR$Heading[2]) {print("T")}
[1] "T"
는 완벽하게 작동, 그래서 문제가 어떻게 든 matchedSCR와 가정,하지만 난 이유를 알아낼 수 없습니다. 다음과 같은 단일 문자 열 (요인이 아님)입니다.
VisA protein, Streptomyces virginiae
VisB protein, Streptomyces virginiae
VisC protein, Streptomyces virginiae
VisD protein, Streptomyces virginiae
subpeptin JM-A, Bacillus subtilis
subpeptin JM-B, Bacillus subtilis
BT peptide antibiotic, Brevibacillus texasporus
LI-Fb peptide, Paenibacillus polymyxa
누구나 이러한 문자 비교가 실패 할 수있는 이유를 제안 할 수 있습니까? 특수 문자가 여기에 어떤 이유 때문에 물건을 올릴까요? (그들은 작동중인 다른 하위 집합 데이터 프레임과 일치 할 때 중요하지 않습니다.) 정말 필요한 것은 SCR의 타의 추종을 불허하는 데이터입니다. 필자는 matchedSCR을 생성 한 복잡한 선택의 반대를 기반으로 엄청나게 느린 프로세스로 이것을 생성 할 수 있습니다. 그러나 여기에서 오류가 발생했기 때문에이 오류를 다시 배우고 싶습니다. 그래서이 문제가 다시 발생하지 않습니다.
고맙습니다! 나는 너의 제안을 시도 할 것이다. : – NotMyJob
@ NotMyJob, 주어진 해결책을 시도하는 것이이 커뮤니티에서 관습입니다. 작동하는 경우, "대답"으로 표시하고, 감사의 말을 전하려한다면, 내 대답을 포기할 것입니다. 작동하지 않는 경우 이유를 지정하는 설명을 작성하십시오. 기억하십시오, 이것은 다른 사람들에게 유용 할 것입니다! –