지난 포스팅에서 외부 파일을 R로 불러오는 함수에 대해서 알아봤다면, 이번 포스팅에서는 거꾸로 R에서 처리한 데이터 객체를 외부 파일(텍스트)로 저장하는 함수와 분석결과를 외부 파일로 저장하는 함수에 대해서 알아보겠습니다. 

 

(엑셀로 내보내는 것은 유용할 거 같아 시도해봤는데요, rJAVA가 안깔린다면서 에러가 나네요 -,-;)

 

 


 

 (1) 데이터 객체를 텍스트 파일로 저장: write.table()


지난 포스팅에서 외부 파일에서 R로 불러왔던 'dataset_1' 데이터 프레임을 이번에는 거꾸로 'cust_profile.txt'라는 이름으로 밖으로 내보내서 저장을 해보도록 하겠습니다. 

 

> ## 데이터 객체를 외부 텍스트 파일로 저장: write.table()

> write.table(dataset_1, "C:/Users/user/Documents/R/cust_profile.txt", 

+             sep = ",", 

+             row.names = FALSE, 

+             quote = FALSE, 

+             append = TRUE, 

+             na = "NA"

+             ) 

 

  • write.table( 데이터셋 이름, 저장할 경로/저장할 파일 이름...) 순서로 쓰되, 경로에 구분자가 '\'가 아니라 R에서는 '/' 이므로 주의 요망
  • sep = "," 또는 " " 또는 ":" 등 데이터 구분자 입력.  tab 구분자는 sep = "\t"
  • row.names = FALSE 행 이름(번호)가 생략됨. key 값이 별도로 있으면 생략하고, 혹시 key 값을 관리하고 싶은면 TRUE로 옵션 설정
  • quote = FALSE 면 변수 이름, 행 이름에 인용부호(" ") 생략. 구분자(sep)를 따로 지정하면 굳이 인용부호 없어도 무방
  • append = TRUE 이면 나중에 추가로 동일 파일 이름으로 write.table()함수가 실행될 경우 기존 파일에 덮어쓰기를 하지 않고 계속 이어 붙이기를 함. 덮어쓰기를 하면 기존 파일이 다 날아가버리고 마지막 덮어쓴 이후의 데이터만 남게되어 대략 난감한 상황 발생할 것이므로 append = FALSE 옵션은 조심. 
  • na = "NA" : 결측값이 있으면 "NA"로 표기. na = "." 이면 결측값을 마침표(.)로 표기.


[R 데이터 객체를 외부 텍스트 파일로 저장하기 전]

 

[R 데이터 객체를 외부 텍스트 파일로 저장하기 후 (cust_profile.txt 파일 신규 생성)]


 


 

 (2) 분석 결과를 외부 파일로 저장: cat()


[ 1~10 숫자형 벡터 x를 외부 텍스트 파일로 저장 ]

> ## 1~10 숫자형 벡터 x 생성

> x <- c(1:10)

> mean_x <- mean(x)

> sd_x <- sd(x)

> z_x <- ((x-mean_x)/sd_x)


> ## cat() 함수

> cat( "Data is as follows:", "\n", 

+      x, "\n", 

+      file = "C:/Users/user/Documents/R/data_x.txt", 

+      append = TRUE)


  • 큰따옴표(" ") 안에 텍스트는 그래도 출력됨
  • "\n"은 새로운 줄로 바꾸라는 뜻 (키보드 엔터 치라는 뜻)
  • 벡터 x 를 입력했더니 아래 처럼 벡터 x가 출력되었음. 벡터 연산도 가능. 
  • file = "" 파일 저장 경로 & 파일 이름 지정
  • append = TRUE 동일 경로 & 파일 이름으로 계속 이어 붙이기 하고 싶을 때 사용



[ x의 평균값을 기존 텍스트 파일에 이어 붙여서 저장 ]

> cat( "Mean of x is", mean_x, "\n", 

+      file = "C:/Users/user/Documents/R/data_x.txt", 

+      append = TRUE) 





[ x의 표준편차를 기존 텍스트 파일에 이어 붙여서 저장 ]

> cat( "Standard Deviation of x is", sd_x, "\n", 

+      "\n", 

+      "\n", 

+      "Z score of x is", z_x, "\n", 

+      file = "C:/Users/user/Documents/R/data_x.txt", 

+      append = TRUE) 





양이 적거나, 한번 하고 말일이면 그냥 console 창 가서 눈으로 분석결과 보고서 직접 타이핑하거나, 아니면 블럭 설정해서 복사 > 붙여넣기 하면 됩니다. 다만, 양이 아주 많거나, 아니면 다수 동일 반복작업이 필요한 경우는 cat() 함수로 프로그래밍을 하는게 노가다를 줄이고 정신 건강에도 좋겠지요?! 알아두면 유용한 함수입니다. 


console에 나타나는 모형 적합 결과를 외부 파일로 저장할 때 사용하는 capture.output()은 다음번 포스팅에 소개하도록 하겠습니다. 

 

이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡'를 꾸욱 눌러주세요.^^


Posted by R Friend R_Friend

댓글을 달아 주세요

  1. 2016.07.17 22:25  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. 2016.07.26 15:34  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • R Friend R_Friend 2016.07.26 16:02 신고  댓글주소  수정/삭제

      cat() 함수는 "분석 결과나 텍스트"를 외부 파일로 저장할 때 씁니다.

      write.table은 "데이터프레임"을 외부 파일로 내보내서 저장할 때 사용합니다.

  3. 2016.10.04 15:03  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  4. 함께멀리 2017.12.14 00:34  댓글주소  수정/삭제  댓글쓰기

    정성스럽게 써주신 블로그 글을 보면서 혼자 R을 공부하고 있는 사람입니다. 감사합니다.
    data를 cat()함수를 통해서 아래와 같이 진행해 봤는데, 자꾸 error가 나면서 등록이 안됩니다.
    어디가 잘못된 것인지요??

    > cat ("data is as follow","/n",
    Error: unexpected '>' in ">"
    > x,"/n"
    Error: unexpected ',' in " x,"
    > file = "C:/Users/Jujak/Documents/R/ex/data_x.txt"

  5. 인사하는너구리 2018.08.17 11:29  댓글주소  수정/삭제  댓글쓰기

    R에 관심있어서 혼자 공부하는 학생인데 너무 잘보고있습니다. 감사해요!!!
    write.table 실행시 '열의 이름들을 파일에 추가합니다'라는 warning message가 뜨더라구요
    구글링 해보니 "col.name = FALSE" 추가해서 해결했습니다.
    저와 같은 증상 나타나시는 분들은 참고하셨습면 좋겠네요

    • R Friend R_Friend 2018.08.17 11:41 신고  댓글주소  수정/삭제

      안녕하세요 인사하는 너구리님,
      댓글 감사합니다. 안내해주신 부분을 포스팅 본문에 추가해서 다른 분들도 쉽게 볼수 있도록 공유하겠습니다. 좋은 정보 감사합니다.

  6. R Friend R_Friend 2018.09.12 16:03 신고  댓글주소  수정/삭제  댓글쓰기

    퇴근 후에 저녁때 살펴보고 답글 달께요.

  7. 안녕하세요 2018.09.27 15:08  댓글주소  수정/삭제  댓글쓰기

    write.table(dataset_1, "C:/Program Files/RStudio/R/cust_profile.txt",
    sep = "",
    row.names = FALSE,
    quote = FALSE,
    ppend = TRUE,
    na = "NA"
    )
    로 입력하였을때
    Error in write.table(dataset_1, "C:/Program Files/RStudio/R/cust_profile.txt", :
    unused argument (ppend = TRUE)
    라고 하면서 작동이 안 되는데 왜 그런지 알 수 있을까요?

  8. R Friend R_Friend 2018.09.27 15:12 신고  댓글주소  수정/삭제  댓글쓰기

    ppend 를 append 로 바꿔서 해보실래요?