728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


R은 결국 데이터를 분석해서 그걸 저장하거나 분석한 데이터를 읽는게 주이므로 이 부분도 언어적으로 크게 발될되있다.

일단 텍스트로 먼저 저장하는 방법을 보도록할건데 그 전에 현재 작업 디렉터리라는것이 중요하다.

왜냐하면 파일을 읽을때 현재 작업 디렉터리를 모른다면 파일의 풀네임을 적어주어야하기 때문이다.

따라서 현재작업디렉터리를 알아보고 수정하는 방법부터 알아보도록 하자.


현재작업디렉터리


현재작업 디렉터리는 present work directory로 줄여서 pwd라고 부른다.

어디서 많이 본것같지 않은가? 리눅스나 맥에서 현재 작업 디렉터리를 출력하고 싶을때 pwd명령어를 입력해서 본다.

R에서도 현재 작업디렉터리를 확인할 수 있다.

이걸 확인하는 함수는 getwd이다.


print(getwd())


이 작업디렉터리는 여러분이 RStudio의 특정 프로젝트 내라면 프로젝트의 위치가 뜰것이다.



여러분이 작업을 하고 파일을 저장할경우 파일의 풀네임을 적지 않는다면 여기에다 저장된다.

그게 싫다면 경로까지 다 포함해서 풀네임을 쳐도된다.


그리고 여러분이 현재작업디렉터리가 마음에 안든다던지 아니면 어떠한 상황에서든 작업디렉터리를고정시키고 싶다면

아래와같이 작업디렉터리를 정해줄 수도 있다.


setwd('/')

print(getwd())

setwd('C:\\')

print(getwd())

 

현재 작업 디렉터리를 지정해주는 명령어는 setwd이다.

setwd는 posix(유닉스,리눅스,맥)식과 윈도우식을 모두 지원한다.

여기서 윈도우식으로 경로를 지정할때 백슬래시는 무조건 두번적어줘야한다.

그 이유는 백슬래시는 예외상황에 쓰는 문자라서 하나만 사용하면 인식이 안되기 때문이다.

사용해보면 둘의 경로는 윈도우에서는 같다고 할 수 있다. posix에서는 아래 방식은 먹히지 않는다.

그러니 호환성을 위해서는 posix방식으로 사용해주는 것이 좋다고 할 수 있다.


txt파일 읽고 쓰기


sink는 파일을 출력하는 가장 보편적인 방법 중 하나라고 할 수 있다.


print(setwd('/Users/jiharu/Desktop/WorkSpace/RStudioWorkSpace/Test1'))


sink('test.txt')


num <- seq(5)

title <- c('StarCraft','LeagueOfLegend','BattleGround','AgeOfEmfire','Gersang')

prices <- c(45000,5000,50000,70000,5000)

count <- c(10,5,3,7,6)


game <- data.frame(Num=num,Title=title,Prices=prices,Count=count)

cat(num)

cat('\n')

cat(title)

cat('\n')

cat(prices)

cat('\n')

cat(count)

cat('\n')

sink()


sink의 경우 기본적으로 화면에 출력하는 것이다.

그런데 여러분이 sink에 파일명을 적으면 더이상 화면에 출력하지 않고 파일에 출력하게 된다.

그리고 다시 sink()를 호출하게되면 다시 파일에서 화면으로 전환되어서 파일과의 연결은 끊어지고 화면에 출력되게된다.

위의 코드를 실행하여보자. \n은 강제개행문자를 의미한다.



해당 경로에 파일이 저장되어 있음을 확인할 수 있다.

이제 파일을 열어보자.



파일을 열게되면 해당 cat으로 출력할 파일들이 저장되어있음을 확인할 수 있다.

이제 파일을 읽어보자.


print(setwd('/Users/jiharu/Desktop/WorkSpace/RStudioWorkSpace/Test1'))


file<-scan('test.txt',what="")

print(file)


읽을때는 scan함수를 사용한다. 여기서 what이라는 파라메터는 어떤 형태인지를 묻는건데

기본적으로 double(즉 숫자)로 되어있으므로 문자가 포함되어있다면 what=""로 문자열도 받는게 가능하게 만들어주면된다.

값을 받게되면 한줄짜리 데이터로 받게된다.



일반 txt파일로 저장하는건 장점과 단점을 같이 내포하는데 가공하기는 좀더 자유로운데 데이터를 읽는건 더 빡세다.

즉 어떤 형태로 올지 잘 모르기 때문이다. 일단 데이터가 테이블 형태로 온다고 가정하면 좀더 이야기는 수월해진다.


print(setwd('/Users/jiharu/Desktop/WorkSpace/RStudioWorkSpace/Test1'))


file<-read.table('test.txt')

print(file)


우리는 그래도 나름 형태에 맞게 보냈으므로 read.table로 읽은 값을 데이터 프레임으로 만들 수있다.

만든 결과는 아래와같다.



'Programming > R' 카테고리의 다른 글

[R-15]파일 읽기,쓰기(csv)  (0) 2017.11.19
[R-14]파일 읽기(xls,xlsx)  (0) 2017.11.19
[R-12]사용자로부터 입력받기  (0) 2017.11.18
[R-11]함수와 전역변수  (0) 2017.11.18
[R-10]함수(function)  (0) 2017.11.18

+ Recent posts