Chapter 2 R basics

2.1 What is R / Rstudio

R은 통계나 생물통계, 유전학을 연구하는 사람들 사이에서 널리 사용되는 오픈소스 프로그래밍 언어 입니다. Bell Lab에서 개발한 S 언어에서 유래했으며 엄청나게 많은 라이브러리 (다른 사람들이 만들어 놓은 코드)가 있어서 쉽게 가져다 사용할 수 있습니다. R은 복잡한 수식이나 통계 알고리즘을 간단히 구현하고 사용할 수 있으며 C, C++, Python 등 다른 언어들과의 병행 사용도 가능합니다. 2019년 top five language에 랭크 되었으며 이는 빅데이터 증가에 따라 인기가 높아진 것으로 볼 수 있습니다 (참고로 2018년에는 7위).

Despite being a much more specialized language than the others, it’s maintained its popularity in recent years due to the world being awash in an ever-growing pile of big data. https://spectrum.ieee.org/computing/software/the-top-programming-languages-2019

R은 통계분석에 널리 사용되는데 이는 데이터 가시화를 위한 그래픽 기능이나 벡터 연산 등의 편리함 때문에 점점 더 많은 사람들이 사용하고 있습니다. 기존에는 느린 속도나 부족한 확장성이 다른 언어들에 비해 단점으로 지적되었으나 R 언어의 계속적인 개발과 업데이트로 이러한 단점들이 빠르게 극복되고 있습니다. R 사용을 위해서는 R 언어의 코어 프로그램을 먼저 설치하고 그 다음 R 언어용 IDE인 RStudio 설치가 필요합니다.

2.2 R / Rstudio installation

2.2.1 R 설치

  • R 사이트에 접속 후 (https://www.r-project.org/) 좌측 메뉴 상단에 위치한 CRAN 클릭.
  • 미러 사이트 목록에서 Korea의 아무 사이트나 들어감
  • Download R for Windows를 클릭 후 base 링크 들어가서
  • Download R x.x.x for Windows 링크 클릭으로 실행 프로그램 다운로드 - 로컬 컴퓨터에 Download 된 R-x.x.x-win.exe 를 실행
  • 설치 가이드에 따라 R 언어 소프트웨어 설치 완료

2.2.2 Rstudio 설치

Rstudio는 R 언어를 위한 오픈소스 기반 통합개발환경(IDE)으로 R 프로그래밍을 위한 편리한 기능들을 제공해 줍니다.

  • 사이트에 접속 (https://www.rstudio.com/), 상단의 Products > RStudio 클릭
  • RStudio Desktop 선택
  • Download RStudio Desktop 클릭
  • RStudio Desktop Free 버전의 Download를 선택하고
  • Download RStudio for Windows 클릭, 다운로드
  • 로컬 컴퓨터에 다운로드된 RStudio-x.x.x.exe 실행
  • 설치 가이드에 따라 설치 완료

2.3 Rstudio interface

  • 좌측 상단의 공간은 코드편집창, 좌측 하단은 콘솔창 이며 각 위치를 기호에 따라서 바꿀 수 있습니다.

2.4 Keyboard shortcuts

  • 참고사이트
  • 코드편집창 이동 (Ctrl+1) 콘솔창 이동(Ctrl+2)
  • 한 줄 실행 (Ctrl+Enter)
  • 주석처리 (Ctrl + Shift + C)
    • 또는 #으로 시작하는 라인
  • 실습
    • 코드편집창에서 다음 입력

    • 단축키 Ctrl + enter로 코드 실행
    • 단축키 Ctrl + 2로 커서 콘솔창으로 이동
    • xx+y값 확인
    • 단축키 Ctrl + 1로 코드편집창 이동
    • 단축키 Ctrl + Shift + C 사용
# x <- 10
# y <- 20

2.5 R programming basics and terminology

  • Console: 명령어 입력하는 창
  • Code: R 프로그래밍 변수/제어문 모음
  • Objects (개체, variable): 값이 (데이터) 저장되는 장소
  • Data types: Integers, doubles/numerics, logicals, and characters.
  • Object (Variable) types:
    • Vectors: 값들의 모임 combine function c() EX: c(6, 11, 13, 31, 90, 92)
    • Factors: 범주형 데이터 저장 장소
    • Data frames: 2D matrix 형태 데이터 저장 장소
  • Conditionals (조건, 제어):
    • if: ==, & (AND), | (OR) Ex: (2 + 1 == 3) & (2 + 1 == 4)
    • for, while: 반복 수
  • Functions (함수, commands): 특정 일 수행, 함수이름 - 입력값 (arguments) - 출력값 (output) 으로 구성

2.6 Set a working directory

  • 시작 전 항상 작업 디렉토리 설정
  • 예를 들어 c: 아래 새로운 디렉토리 rstat01 을 만들고 작업공간으로 설정
getwd()
dir()
setwd("C:\\rstat01")
getwd()
dir()
  • RStudio > Session > Set Working Directory > Choose Directory

2.7 R coding practice

  • 콘솔 계산기
2 + 2
((21)^2 + (13)^2 )^(1/2)
2 + 2; 2 - 2
  • 이전 명령: 콘솔에서 위 아래 화살표

2.8 Variables and values

  • 프로그래밍 언에어서 변수, 값 개념
  • Assignment operator ( <- OR = )
    • Valid object name <- value
    • 단축키: Alt + - (the minus sign)
x <- 2
y <- x^22*x + 1
y
x <- "two"  
some_data <- 9.8
  • 내장 변수 Built-in variables
pi
  • 변수이름 작명법
    • 문자, 숫자, “_”, “.” 등으로 구성
    • 대소문자 구분
    • 가독성, 의미있는 변수 이름
    • 길이 제한 없음
i_use_snake_case <- 1
otherPeopleUseCamelCase <- 2
some.people.use.periods <- 3
And_aFew.People_RENOUNCEconvention <- 4
  • 자동 완성 기능 (Tab completion) in RStudio
boxplot()

2.9 Variable type of (storage) mode

2.10 Variable - Vectors

  • Combine function c(): Concatenating elements end to end
x <- c(10.4, 5.6, 3.1, 6.4, 21.7) 
y <- c("X1", "Y2",  "X3",  "Y4")
  • 인덱싱: Subsets of the elements of a vector
x[1]
x[1:3]
x[c(1,2,4)]
y[3]

2.11 Functions

  • Function 정의
my_sine <- function(x){
	y <- sin(x)
	return(y)
}
  • 사용법
my_sine(pi)
  • 용어
    • function name: my_sine
    • parameter: x
    • argument: pi
    • return value: y
log(100)
?log
log(100, base=10)
log(100, 10)
  • R code 스니핏
fun
  • 내장 함수 (Built-in functions)
    • Tab completion
x <- pi
sin(x)
sqrt(x)
log(x)
log(x, 10)
x <- c(10, 20, 30)
x + x
mean(x)
sum(x)/length(x)

2.12 Vectorized functions

x <- c(10, 20, 30)
x + x
sqrt(x)
sin(x)
log(x)
x-mean(x)

2.13 Help

  • R의 장점 중 하나 (예제 포함)
?
?mean
help("mean")
example("mean")
help.search("mean")
help(package="MASS")

2.14 R packages

  • UsingR package installation

install.packages("UsingR")
  • UsingR package loading
library(UsingR)
help(package="UsingR")
  • R 설치 디렉토리
  • R 패키지 설치 디렉토리
.libPaths()
path.package()

2.15 Data sets

  • 일반적으로 패키지 안에 관련된 데이터도 같이 저장
  • data() function를 이용해서 패키지 데이터를 사용자 작업공간에 복사해서 사용 가능
head(rivers)
length(rivers)
class(rivers)
data(rivers)
data(package="UsingR")
library(HistData)
head(Cavendish)
str(Cavendish)
head(Cavendish$density2)

2.17 Problems

과제는 새로운 R 파일을 생성 후 코드를 작성하고 영문이름-학번-날짜.R 이름으로 저장하여 조교에게 이메일로 제출

  • 1.1 다음 공식들을 계산하는 R 코드를 작성하시오

\[ \sqrt{(4+3)(2+1)} \\ 2^3 + 3^2 \\ \frac{0.25 - 0.2}{\sqrt{0.2 (1-0.2)/100}} \]

  • 1.2 변수 x에 1, 3, 5, 7, 9를 저장하는 코드를 작성하시오

  • 1.3 변수 y에 2, 4, 6, 8, 10을 저장하는 코드를 작성하시오

  • 1.4 위 변수 xy를 더한 값을 z에 저장하는 코드를 작성하시오 (백터연산)

  • 1.5 z의 원소들의 합을 구하시오 (sum()함수 활용)

  • 1.6 두 값을 입력받아 합을 출력하는 mysum 이름의 함수를 만들고 이 함수를 다음과 같이 이용해서 15와 20 두 값의 합을 구하는 코드를 작성하시오 (참고로 직접 만든 함수를 사용하기 위해서는 사용하기 전 해당 함수를 workspace에 등록하는 과정이 필요함)

z = mysum(15, 20)
cat(z)

크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.