R 환경에 일련의 2D 데이터 프레임 파일을 읽고 내용을 플로팅하고 싶습니다.파일 이름을 기준으로 x 축에 동적으로 주석을 추가하는 방법
예제 파일 이름은 다음과 같습니다
MEF_85686672-85692745_orientation _ + _ overlap_2073_regulation_.txt
head(MEF_85686672-85692745_orientation_+_overlap_2073_regulation_.txt)
1 85686673 97.51475
2 85686674 98.51475
3 85686675 100.51475
4 85686676 44.51542
5 85686677 97.50000
나는 이러한 파일의 목록을 만들어이 파일을 반복 할 수 있도록 :
MEF=ls()[grep(ls(), pattern='MEF')]
그런 다음 파일 내용을 THER 위의
plot_files=function(MEF){
mef=get(MEF[i])
tryCatch(
plot(mef[,1], (mef[,2]/mean(mef[1:1000,2])),
main = gsub('.txt','',gsub('MEF_nuc_occupancy_region','',paste(MEF[i]))), xlab="bp",
ylab="Occupancy", type='l', ylim=c(min(mi),max(ma)), col='red'),
error=function() next);
모든 그것이 내가 더 파일 변수의 이름을 기준으로 플롯을 주석 기능을 종료하려고 할 때 문제가 발생하는 것입니다 괜찮습니다. 나는 파일 이름의 '오리 엔테이션'과 '겹침'사이의 '+'부호의 유무에 따라 X 축을 강조하고 싶다.
if(substr(paste(MEF[i]), regexpr(paste(MEF[i]), pattern='_orientation_')+13, regexpr(paste(MEF[i]), pattern='_overlap_')-1)=='+'){
rect(xleft=85692000, xright=nrow(mef), ybottom=par("usr")[3], ytop=par("usr")[4], density=NA, col="lightgray")
}
}
'+'기호가있는 경우. 'overlap'과 'regulation'사이에서 발생하는 파일 이름의 번호가 취해지고이 번호 (행 번호까지 빼기)에서 x 축의 끝까지입니다.
그래서 나는 파일을 각 통해 플롯 기능을 사용하고 반복 할 때
for(i in seq(length(MEF))){
tryCatch(plot_files(MEF,ESC), error=function(e) e)
}
첫 번째 문제는 아무것도 ... 내가 처음이 될 수 있다는 것을 의심 플롯의 강조 표시되지 않은 것입니다 전체 x 축의 컨텍스트에서 볼 수있는 영역에 대한 겹침이 작아서 발생합니다. 그러나 중복 중 일부는 매우 크고 아직 결과 플롯 'X 축 중 어느 것도 강조되지이다 : 그래서
내가 인공 번호 (85692000)로 디버깅하고 확장하려고 할 때 같은 축의 오른쪽 끝으로 강조 :
if(substr(paste(MEF[i]), regexpr(paste(MEF[i]), pattern='_orientation_')+13, regexpr(paste(MEF[i]), pattern='_overlap_')-1)=='+'){
rect(xleft=85692000, xright=nrow(mef), ybottom=par("usr")[3], ytop=par("usr")[4], density=NA, col="lightgray")
}
그래서뿐만 아니라 x 좌표의 잘못된 끝에서 연장 하이라이트 축뿐만 아니라 전체 플롯을 다루지도 않습니다. 단지 x 축을 선으로 강조하고 싶습니다 ...끝에서 x 축을 강조
하나 :
내가 원하는 모든 플롯 X 축이 다음과 같이 하이라이트입니다 (참고 : 나는 색상과 나중에 밀도를 정렬합니다) x 축의 길이에서 빼는 변수 이름의 겹침에 해당하는 수로 축의 수를 나눕니다 (참고 : '+'가 아닌 '-'가있는 대체 사례에서 작업합니다. 강조 표시가 오른쪽이 아닌 축의 왼쪽에서 확장 됨)
'할당'을 사용하지 마십시오. 리스트와'lapply()'를 대신 사용하십시오. – Uwe