2014-09-26 1 views
0

유전자 스크립트 데이터를 포함하는 수십 개의 파일을 R에 셸 스크립트 기반 파이프 라인의 일부로 사용할 R 스크립트를 작성했습니다 하나씩 다른 스크립트 (args[] 사용).여러 개의 R 스크립트 실행 결과를 단일 출력 CSV 파일로 작성

이 스크립트를 실행할 때마다 결과를 단일 결과 파일에 쓰는 방법을 찾는 데 어려움이 있습니다. 이 작업을 수행하는 가장 쉬운 방법은 비어있는 results.csv 테이블을 만든 다음 스크립트가 실행될 때마다이 파일의 다음 행에 쓰도록 요청하는 것입니다 (스크립트 작성 문제를 파일에 그대로 저장함). 각 실행마다). 이 맥락에서 친구가 다음 코드로 나를 도와 : 위의 코드 "meancoscore"에서

x<-readLines("results.csv") 

if(x[[1]]==""){x[[1]]<-paste("meancoscore", "meanboot", "CIres", "RIres", "RC", "nodecount", sep= ",")} 

x[[length(x)+1]]<-paste(meancoscore, meanboot, CIres, RIres, RC, nodecount, sep = ",") 
x<-data.frame(x) 
write.table(x,"results.csv", row.names = F, col.names = F, sep = ",") 

, "meanboot", "CIres", "RIres", "RC"및 "nodecount"최초로 데이터 프레임이 첫 번째 행에 아무 것도없는 경우 헤더로 사용됩니다.

다음과 같은 결과 (객체 : meancoscore, meanboot, CIres, RIres, RC 및 nodecount는 해당 헤더에 해당하는 열에 기록됩니다.) 다른 소스 파일로 R 스크립트를 다시 실행하면 단순히 results.csv 파일의 다음 행으로 결과를 쓰기

을하지만, 다음과 같은 다양한 입력 파일이 코드의 3 실점 후 results.csv 파일에서 볼 수있다 :.

"\""\\""meancoscore,meanboot,CIres,RIres,RC,nodecount\\""\"" 
""\""\\""0.000,76.3247863247863,0.721002252252252,0.983235214508053,0.708914804154032,117\\""\"" 
""\""0.845,77.6923076923077,0.723259762308998,0.983410513459875,0.711261254217159,117\"" 
""0.85,77.4358974358974,0.728886344116805,0.983878381369061,0.717135516451654,117" 

내 원하는 결과는 다음과 같습니다 :

meancoscore,meanboot,CIres,RIres,RC,nodecount 
0.000,76.3247863247863,0.721002252252252,0.983235214508053,0.708914804154032,117 
0.845,77.6923076923077,0.723259762308998,0.983410513459875,0.711261254217159,117 
0.85,77.4358974358974,0.728886344116805,0.983878381369061,0.717135516451654,117 

각각의 연속적인 재미가 더 많은 백 슬래시와 더 많은 인용 부호를 results.csv 파일에 추가하는 것처럼 보입니다.

이상 완료되면 results.csv 파일을 간단하게 읽고 results$meanboot 또는 summary(results$meanboot) 등의 열에 액세스하여 데이터를 분석 할 수 있습니다.

누구든지 위의 코드를 수정하거나 대체 솔루션을 제공하는 방법에 대한 조언을 제공 할 수 있습니까?

나는 여기서 의도적으로 R 스크립트에 관심있는 입력 파일을 통해 실행하고 단순히 결과의 전체 테이블을 객체로 어셈블하는 옵션을 쓰지 않는 옵션을 추가해야한다고 덧붙여 야합니다. 이것은 매우 간단하게 쓸 수 있습니다). 이는이 스크립트에 의해 수행되는 작업이 클러스터의 여러 시스템에 적용되기 때문입니다.

시간과 귀하가 제공 할 수있는 도움에 감사드립니다.

+1

'write.table()'호출에서'quote = FALSE'를 설정해보십시오. – voidHead

+0

열에 문자 값이 있기 때문에 파일에 인용문이 인쇄됩니다. 모든 값은 문자를 강요합니다. 'colnames'를 사용해야합니다. –

+2

쉘 스크립트에서 나중에 모든 파일을 추가하지 않는 이유는 무엇입니까? '>>'사용? 예 : [** 여기 ** 참조] (http://stackoverflow.com/a/5586385/1478381) –

답변

0

voidHead의 의심에 따라 호출에 quote = FALSE을 추가하면 문제가 해결되었습니다.

관련 문제