2015-01-11 5 views
2

에서하지 (안정적) 작업 나는 텍스트 파일로 콘솔 출력을 재 지정하려면 다음 코드를 작성 않습니다. 대화식으로 코드를 실행하면 텍스트 파일에 세 개의 명령 '(dim, str, summary) 출력이 모두 나타납니다. 그러나 함수에 코드를 삽입하고 함수 호출을 통해 대화식으로 실행하면 str 명령 출력 만 표시됩니다. 이것은 버퍼링 문제 일 수 있습니다. 어떤 제안?R은 - 콘솔 출력 리디렉션 함수 호출

운영 체제 : OS X 10.9.5 (댈러스 매버릭스); R은이 코드가 안정적으로 작동하지 않는다 (6784)


이 코드는 작동 ...

con <- file("FileInfoLog.txt") 
sink(con, append=TRUE) 
sink(con, append=TRUE, type="message") 

writeLines("\n\n\n===============================================================\n") 
writeLines("Dimensions are ") 
dim(db) 
writeLines("\n\n\n===============================================================\n") 
writeLines("Structure is ") 
str(db) 
writeLines("\n\n\n===============================================================\n") 
writeLines("Summary is ") 
summary(db) 

# Restore output to console 
sink(type="message") 
sink() 

GUI 1.65 매버릭스 빌드 3.1.1 ... 단지 STR()는 출력이 나타납니다 텍스트 파일에. 작동 코드에서

getFileInfo <- function(db) { 

    con <- file("FileInfoLog.txt") 
    sink(con, append=TRUE) 
    sink(con, append=TRUE, type="message") 

    writeLines("\n\n\n===============================================================\n") 
    writeLines("Dimensions are ") 
    dim(db) 
    writeLines("\n\n\n===============================================================\n") 
    writeLines("Structure is ") 
    str(db) 
    writeLines("\n\n\n===============================================================\n") 
    writeLines("Summary is ") 
    summary(db) 

    # Restore output to console 
    sink(type="message") 
    sink() 

} 

FileInfoLog.txt ...

========================== =====================

크기는 입니다. [1] 28947 17

=============================================== ================

구조는 입니다. 'data.frame': 28947 obs. $ 가기 : : INT 2 2 2 2 2 2 2 2 2 2 ... $ 브랜드 : 17 개 변수의 계수 w/3 수준 "dominicks", "minute.maid".. : 3 3 3 3 3 3 3 3 3 3 ... $ 주 : int로 53 54 57 40 46 47 48 50 51 52 ... logmove $ : NUM 9.02 8.72 8.25 8.99 9.09 ... [...]

== ========================================================================================================== ===========

요약은 점포 주 logmove feat AGE60
최소입니다. : 2.00 dominicks : 9649 Min. : 40.0 Min. : 4.159 Min. : 0.0000 Min. : 0.520 Min. : 0.05805
첫 번째 칸 : 5300 분 메이드 : 9649 첫 번째 질문 : 70.0 첫 번째 질문 : 8.490 첫 번째 질문 : 0.0000 첫 번째 질문 : 1.790 첫 번째 질문 : 0.12210
중간 값 : 86.00 열대 : 9649 중간 값 : 101.0 중앙값 : 9.034 중앙값 : 0.0000 중앙값 : 2.170 중앙값 : 0.17065
평균값 : 100.5 평균값 : 9.168 평균값 : 0.2373 평균값 : 2.282 평균값 : 0.17313
3 Qu.:111.00 3 Qu.:130.0 3 Qu .: 9.765 3rd Qu.:0.0000 3rd Qu.:2.730 3rd Qu.:021395
Max. : 최대 137.00 : 최대 160.0 : 최대 13.482 : 1.0000 Max. : 3.870 Max. : 안정적으로 작동하지 않는 코드에서 0.30740
[...]


FileInfoLog.txt ...

============================================== =================

치수 =======================

있습니다 ========================================

구조 의 데이터이다. 프레임 ': 28947 obs. $ 가기 : : INT 2 2 2 2 2 2 2 2 2 2 ... $ 브랜드 : 17 개 변수의 계수 w/3 수준 "dominicks", "minute.maid".. : 3 3 3 3 3 3 3 3 3 3 ... $ 주 : int로 53 54 57 40 46 47 48 50 51 52 ... logmove $ : NUM 9.02 8.72 8.25 8.99 9.09 ... [...]

== ========================================================================================================== 대화 형으로 실행하면 ===========

요약은 print() 명령은 각각의 결과를 암시 적으로 호출,

+0

는 관련 코드를 게시? – HaveNoDisplayName

+0

콘솔 출력이 질문과 관련이 있다고 생각해서 포함 시켰습니다. 나는 그것을 상당히 단축했다. 당신의 발언에 감사드립니다. –

+0

: +1 노력하여 ... – HaveNoDisplayName

답변

0

입니다. 대화 형 모드에서는 그렇지 않습니다. print()을 명시 적으로 호출해야합니다. 따라서 print(dim(db))이 필요합니다.

str() 함수는 cat()을 통해 출력을 만들고 실제로 아무것도 반환하지 않으므로 기능이 다릅니다.

source() 함수를 사용하여 스크립트를 실행하는 경우 echo=TRUE을 자동 인쇄 동작을 유지하도록 설정할 수 있습니다.

또한, 오히려 sink()을 설정하여 귀찮게 이상과 capture.out() 자신을 명령한다. 당신은 R 코드와 함께 좋은 찾고 보고서를 만들기 위해 knitr보고하는 것이 좋습니다.

+0

... 고마워요. 또한 knitr에 대한 제안에 감사드립니다. 나는 그것을 들여다 볼 것이다. –