1 R 코드

R 코드를 데이터 과학 문서에 임베딩(embedding)할 경우 R 코드를 “R 코드 덩어리(code chunk)”로 작성한다. 다음과 같이 R 코드 덩어리를 다음과 작성했다고 가정하자.

```{r R-code-chunk}
data(cars)
summary(cars)
``` 

상기 코드 실행결과는 다음과 같다.

data(cars)
summary(cars)
     speed           dist       
 Min.   : 4.0   Min.   :  2.00  
 1st Qu.:12.0   1st Qu.: 26.00  
 Median :15.0   Median : 36.00  
 Mean   :15.4   Mean   : 42.98  
 3rd Qu.:19.0   3rd Qu.: 56.00  
 Max.   :25.0   Max.   :120.00  

2 파이썬 코드

데이터 과학의 양대 축을 이루는 언어인 파이썬 코드도 R마크다운에서 파이썬 코드 덩어리로 실행이 가능하다.

```{python python-code-chunk}
print("파이썬 사랑해요!!!")
```

상기 코드 실행결과는 다음과 같다.

print("파이썬 사랑해요!!!")
파이썬 사랑해요!!!

3 쉘 스크립트

쉘(shell) 스크립트는 물론이고 자주 사용하는 쉘 명령어도 적용이 가능하다.

```{bash shell-code-chunk}
echo "배쉬 쉘 사랑해요!"
```

상기 코드 실행결과는 다음과 같다.

echo "hello world!"
hello world!

특히, 윈도우에서 배쉬 쉘스크립트를 실행시키기 위해서는 다음 작업이 필요하다. Cygwin을 설치하하고 “환경설정” 경로명에 C:\cygwin64\bin을 추가하여 R마크다운에서 bash 명령어를 실행시킬 수 있도록 준비한다.

4 SQL 코드

R마크다운 SQL 코드 덩어리를 돌리기 위해서는 데이터 생성작업부터 필요하고 R 코드 덩어리 정의부분에 connection =에 데이터베이스 객체 명칭을 넣어주어야 한다.

4.1 sqlite3 DB 생성

sqlite3 예제 데이터베이스를 다운로드 받는다.

download.file(url = "https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql", destfile = "data/Chinook_Sqlite.sql")

이제 sqlite3 데이터베이스를 생성시킨다. 이를 위해서 다음 두가지 작업을 수행한다.

  1. 터미널을 열고 Chinook_Sqlite.sql 파일을 다운로드 받은 디렉토리로 이동한다.
  2. Chinook_Sqlite.sql 파일을 Chinook.db 으로 변환시킨다.
    • $sqlite3 Chinook.db < Chinook_Sqlite.sql
  3. sqlite3 명령어를 실행시켜 데이터베이스를 생성한다.
    • $ sqlite3 Chinook.db
  4. 다운로드받은 Chinook_Sqlite.sql 스크립트를 실행하여 Chinook 데이터베이스를 생성시킨다.
    • sqlite> .read Chinook_Sqlite.sql

4.2 sqlite3 DB를 R에 연결

생성된 SQLite3 데이터베이스를 DBI 커넥터를 이용하여 데이터베이스에 연결시킨다.

library(DBI)
library(RSQLite)

chinook <- dbConnect(RSQLite::SQLite(), dbname = "data/chinook.db")

R마크다운에서 SQL 문을 데이터베이스에 연결시켜 돌리기 위해서는 다음과 같이 코드를 작성한다. SQL 코드 본문에는 당연히 SQL 문이 들어가고, connection = chinook을 통해 SQL 문을 돌리는데 필요한 데이터베이스를 정의시킨다.

```{sql sql-code-chunk, connection = chinook}
SELECT * FROM Artist LIMIT 10;
```

상기 코드 실행결과는 다음과 같다.

SELECT * FROM Artist LIMIT 10;
Displaying records 1 - 10
ArtistId Name
1 AC/DC
2 Accept
3 Aerosmith
4 Alanis Morissette
5 Alice In Chains
6 Antônio Carlos Jobim
7 Apocalyptica
8 Audioslave
9 BackBeat
10 Billy Cobham
 

데이터 과학자 이광춘 저작

kwangchun.lee.7@gmail.com