R 시작하기, 2022

R과 R Studio 를 설치하고 R 의 기본환경을 이해하기 위해 정리한다.

old version:

R 소개

R은 벨 연구소 Becker 등에 의해 개발됐던 S language를 기반으로 통계 계산, 시각화를 위한 프로그래밍 언어를 포함한 개발환경이다. S language를 이용한 Insightful사의 S+는 S 언어를 이용한 상업용 소프트웨어이고, R은 공개소프트웨어 기반의 소프트웨어 이다.

  • 예) Excel, SPSS, SAS, HLM, MPlus 등 통계 프로그램

R 학습 자료

  1. K-MOOC: 데이터과학을 위한 R프로그래밍, 이혜선 (포항공과대학교)
  2. R프로그래밍및실습, Jinseog Kim (동국대학교)

설치

R 프로그래밍 엔진은 R 을 다운로드하고 GUI 도구로 R Studio를 사용할 수 있다.

  1. CRAN mirror http://r-project.org 에서 R Download 한다.
  2. R Studio IDE
  3. Old Version RStudio 설치

R 시작하기

R 은 console을 통해 프로그래밍을 하거나 외부 에디터에서 작성한 소스를 컴파일해서 실행 할 수 있다. R 엔진을 IDE 를 통해서 개발한 코드를 실행하고 테스트 할 수 있다.

macOS에서 R 시작시 다음 같은 경고를 보이면 macOS FAQ를 참고해 설정을 해주어야 한다.
> [그림. ]

R과 R Studio 화면

R prompt

R을 실행하면 명령 입력 프롬프트 > 을 볼 수 있다. 프롬프트에서 한 줄에 하나 혹은 한문장의 명령이 입력되고 실행된다.

1
2
3
4
5
6
7
> print("Hello World")
> Factorial(10) # 계산 기능
> Rep(x="hello", times=5)
> Rep(times=5) : Error…
> Plot(10,10)
> Plot(c(5,7), c(20, 30))
> Plot(runif(100), runif(100)) # runif()는 랜덤 넘버 생성 함수

프롬프트 > 에 명령을 입력하고 엔터키를 실행이 되지만 코드 블럭 괄호((),{},[])가 닫히지 않으면 프롬프트에 + 에 연결해서 계속 입력할 수 있다.

1
2
3
4
5
6
7
[Workspace loaded from ~/work-R/R기본사용/.RData]

> print('hello r studio'
+ 'greeting me'
Error: unexpected string constant in:
"print('hello r studio'
'greeting me'"

R Studio IDE

R Studio IDE에서 작성 가능한 R 프로그래맹 편집기 종류를 살펴보면,

R Notebook 코드 작성중 package 요구

R 이용

R 사용 환경에 도움이 되는 구성을 살펴보자

한글 폰트 지정

나눔고딕코딩 폰트를 다운받아 설치한다.

R 환경설정에서 Nanum font 사용한다.

help() 사용

R에서 도움말을 통해 함수, 형식, 등의 정보를 얻을 수 있다.

1
> help(“함수명”)

패키지를 로드하지 않은 함수의 도움말 보기

1
> help.search(“함수명”)

내가 얻은 패키지는 어떤 것인가?

1
> help(package=”알고싶은 패키지명”)

주요 도움말 명령 사용

1
2
3
4
5
6
7
8
9
10
> help()                      # 도움말 창
> help(ls) # 함수 ls()에 대한 도움말
> ?ls # 도움말 단축키 ?로 help(ls) 호출
> help(">") # R의 예약어, 연산자 등은 ""로
> help("for") # 묶는다.
> #특정 패키지에 대한 도움말 요청
> help(package="datasets")
> # 일반 검색어를 이용해 도움말 검색
> help.search("Latex")
> ??"Latex"

샘플로 제공하는 예제를 사용할 수 있도록 검색을 지원한다.

1
2
3
4
5
6
7
> example("formula")

formul> class(fo <- y ~ x1*x2) # "formula"
[1] "formula"

formul> fo
y ~ x1 * x2

object

R은 동적 객체 방식을 사용한다. 아래는 hello 변수를 선언하고 값을 대입한다. 이렇게 대입되면 R에서 객체로 다뤄진다.

1
2
3
> hello <- “안녕하세요"            #유니코드 문자열
> hello
[1] “안녕하세요"

동적 객체이기 때문에 새로운 변수 값을 대입할 수 있다.

1
2
3
> hello <- 100 + 200
> hello
[1] 300

숫자형식의 데이터를 가지고 문자형으로 다시 대입할 수 있다.

1
2
3
> hello <- 'this is a text'
> hello
[1] "this is a text"

객체와 객체를 이용해서 연산도 할 수 있다.

1
2
3
4
> test1 <- 1
> test2 <- 2
> test1 + test2
[] 3

논리형식의 데이터를 이용해 참/거짓을 이용할 수 있다.

1
2
> Object1 <- TRUE               # 논리형
> Object2 <- FALSE

ls() : 객체 목록

ls()는 사용한 객체들의 목록을 반환해 준다.

1
2
3
> x <- 1
> y <- 1:10
> ls()

rm(): R 객체를 삭제

1
2
3
4
> x <- 1
> y <- 1:10
> rm(x,y)
> ls()

Workspace

R에서 작업공간(workspace)에 사용자가 R을 이용하여 수행하는 자료와 분석 프로시져 등을 포함하게 된다.

  • getwd(): 현재 워크스페이스 경로
  • setwd(PATH): 지정한 PATH로 현재 워크스페이스를 지정한다.
  • list.files(PATH): 경로의 파일 목록을 반환

객체 저장

작업공간은 저장할 수 있다. 저장을 실행하면 작업 디렉토리에 .RData 라는 파일이 생성된다.

1
2
> help("save.image")        # 도움말을 살펴보며 진행
> save.image()

R의 종료를 위해서는 명령문 프롬프트에서 **q()**를 실행하던가 메뉴로부터 “종료”를 선택한다.
종료시 워크스페이스에 작업된 자료를 저장할 수 있다.

R패키지: R의 확장기능 이용

search()는 설치된 R패키지들을 확인하는 명령

1
2
3
4
search()
## [1] ".GlobalEnv" "package:stats" "package:graphics"
## [4] "package:grDevices" "package:utils" "package:datasets"
## [7] "package:methods" "Autoloads" "package:base"

library(): R에 설치된 모든 패키지 및 설명

library() 명령은 라이브러리를 현재 환경에 로딩해 준다.

1
2
library()
library(package_name): 패키지를 현재 R세션으로 로딩

예를 들어 MASS 패키지를 로딩하는 명령을 보자

1
library(MASS) # MASS 패키지를 로드

새로운 패키지를 설치할 수 있다.

1
install.packages(): R에 새로운 패키지 설치

stringr 패키지를 설치한다.

1
install.packages("stringr")


R 객체 이용하기

R 객체에는 아래와 같은 종류들이 있음

  • atomic(상수)
  • vector(벡터)
  • matrix(행렬)
  • list(리스트)
  • data.frame(데이터프레임)
  • function(함수)
  • operator(연산자) …
  • 데이터 객체 (data object): R 객체 중 데이터 객체 : atomic, vector, matrix, data.frame

객체의 이름

객체명 표시방법: 알파벳문자, ’_‘,’.’, 숫자의 조합

주석

한 줄을 인터프리터가 해석하지 않고 패스하는 라인 코멘트(주석문) # 를 사용한다

1
2
a <- 1
b_1 <- 10 # <-는 left assignment

벡터

R의 최소 단위는 벡터

정수(1), 실수(5.8271), 문자(‘A’) 문자열(“hello”)는 스칼라이다.
벡터는 {1,2,3,4,5,6}과 같이 스칼라가 여러 개 모인 것이이다.

한 개의 스칼라 값을 가진 벡터를 선언한다.

1
> a <- 5

객체에 다른 객체 넣기

1
2
3
4
5
6
7
> object1 <- 1
> object2 <- 2
> object1
[1] 1
> object1 <- object2
> object1
[1] 2

객체에 다른 객체 넣기

1
2
3
4
5
6
> object1 <- 1
> object1 <- 2
> object1 <- object2
> object2 <- 100
> object1
[1] 2

함수 계산 결과를 객체에 넣기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> Excel1 <- read.csv(“example_student.csv”)

> Object1 <- sum(1,8,4,5,9)
Object1 : 27

> A <- c(1,3,5,6,9) # 벡터에 대해
A : 1,3,5,6,9

> A <- 1
Is.vector(a): True

A <- c(1,2,5)
Is.vector(a): True

> A <- c(“첫번째”, “두번째”, “세번째”)
A : ???

Package 관리

외부에서 제공하는 모듈을 Install, Update, Library 명령으로 관리할 수 있다. 패키지 설치는 Install 그리고 사용할 때는 Library 명령을 사용하고 패키지 갱신에 Update 명령을 사용한다.

패키지 관리

패키지 설치과 업데이트

1
2
3
4
> install.packages("패키지명")      # 패키지 설치
> library("패키지명") # 패키지 불러들이기 (사용)
> require("패키지명") #
> update.packges('패키지명') # 패키지 갱신

설치된 패키지 목록 보기

1
2
3
> Library()
> installed.packages()
> Install.packages()[, c(“Packages”, “version”, “License”)]

필수 패키지

1
2
3
4
5
6
7
8
9
10
11
Install.packages(“rgl”) # 3D 그래프 보여주는 패키지
Install.packages(“ggplot2”)
Install.packages(“ggthemes”)
Install.packages(“data.table”)
Install.packages(“devtools”)
Install.packages(“KoNLP”)
Install.packages(“dplyr”)
Install.packages(“plyr”)
Install.packages(“reshape2”)
Install.packages(“scales”)
Install.packages(“stringr”)

Github로 패키지 설치하기

개발자가 베타 버전을 github에 공개하는 경우
Knitr 패키지는 R에서 html, pdf, MS-Word 문서를 만들 수 있음고 https://github.com/yihui/knitr 에서 배포한다.

1
2
3
4
> Install.packages(“devtools”)
Library(“devtools”)

> install_github(“yihui/knitr”)

RStudio UTF8 지원


참조