재현가능한 과학적 분석을 위한 R: Reference

Key Points

R과 RStudio 소개
  • RStudio를 사용해서 R 프로그램을 작성하고 실행한다.

  • R에는 수학연산자와 수학함수가 갖춰있다.

  • <-을 사용해서 값(value)을 변수에 할당한다.

  • ls()를 사용해서 프로그램에 사용된 변수를 출력한다.

  • rm()을 사용해서 프로그램에 사용된 객체를 삭제한다.

  • install.packages()을 사용해서 팩키지(라이브러리)를 설치한다.

RStudio와 함께하는 프로젝트 관리
  • RStudio를 사용해서 일관된 방식으로 프로젝트를 생성하고 관리한다.

  • 원데이터는 읽기 전용으로 처리한다.

  • 자동생성된 출력물은 사용후 버릴 수 있는 것으로 처리한다.

  • 함수 정의와 응용을 분리한다.

도움 청하기
  • help() 함수를 사용해서 온라인 도움을 얻는다.

자료구조(Data Structures)
  • read.csv 함수를 사용해서 R에 표형태 데이터를 불러온다.

  • R의 기본자료형은 실수형, 정수형, 복소수형, 논리형, 문자형이다

  • R에서 인자를 사용해서 범주를 표현한다.

데이터프레임 탐색하기
  • cbind() 함수를 사용해서 데이터프레임에 칼럼을 추가한다.

  • rbind() 함수를 사용해서 데이터프레임에 행을 추가한다.

  • 데이터프레임에서 행을 제거한다.

  • na.omit() 명령문을 사용해서, NA 값을 갖는 행을 데이터프레임에서 제거한다.

  • levels()as.character() 함수를 사용해서 요인을 타맥하고 조작한다.

  • str(), nrow(), ncol(), dim(), colnames(), rownames(), head(), typeof() 함수를 사용해서 데이터프레임 구조를 파악한다.

  • read.csv() 함수를 사용해서 CSV 파일을 불러온다.

  • 데이터프레임 length()가 나타내는 것이 무엇인지 이해한다.

데이터 부분집합 추출
  • R에서 인덱스는 0이 아니라, 1에서 시작.

  • 위치로 개별값을 접근하는데, []을 사용.

  • [low:high]을 사용해서 데이터 슬라이스 작업 수행.

  • Access arbitrary sets of data using [c(...)]을 사용해서 임의 지점 데이터에 접근하는데 사용.

  • 논리 연산자와 논리 벡터를 사용해서 데이터 일부 부분집합으로 추출.

제어 흐름
  • ifelse 를 사용하여 선택을 한다.

  • for 루프를 사용하여 연산작업을 반복한다.

ggplot으로 논문 품질 그래프 생성하기
  • ggplot2를 사용해서 그래프를 생성한다.

  • 그래프(graphics)를 계층으로 생각한다:aesthetics, 기하(geometry), 통계(statistics), 척도변환(scale transformation), 그룹(grouping).

벡터화(Vectorization)
  • 루프 대신에 벡터화 연산을 사용한다.

함수 설명
  • function()를 사용해서 신규 함수를 R에서 정의한다.

  • 인자를 사용해서 함수로 값을 전달한다.

  • stopifnot() 함수를 사용해서 유연하게 R에서 함수 인자를 검사한다.

  • source() 함수를 사용해서 프로그램에 저장된 함수를 불러온다.

데이터를 저장하기
  • ‘Export’ 버튼을 사용해서 RStudio로부터 그래프를 저장한다.

  • write.table() 함수를 사용해서 표형식 데이터를 저장한다.

plyr로 데이터프레임을 쪼개고 합치기
  • plyr 팩키지를 사용해서 데이터를 쪼개고, 쪼개진 데이터별로 함수를 적용시키고 나서, 결과를 조합한다.

dplyr 팩키지로 데이터프레임 솜씨있게 조작
  • 데이터프레임을 조작하는데 dplyr 팩키지를 사용한다.

  • select() 함수를 사용해서 데이터프레임에서 칼럼 변수를 고를 수 있다.

  • filter() 함수를 사용해서 행 값에 따라 데이터를 추출한다.

  • group_by()summarize() 함수를 사용해서 데이터 요약 작업을 수행한다.

  • mutate() 함수를 사용해서 변수를 새로 생성한다.

tidyr 팩키지로 데이터프레임 솜씨있게 조작
  • tidyr 팩키지를 사용해서 데이터프레임 레이아웃 배치를 변경시킬 수 있다.

  • gather() 함수를 사용해서 폭넓은 형태를 긴형태로 변경시킨다.

  • spread() 함수를 사용해서 긴형태를 폭넓은 형태로 변경시킨다.

knitr로 보고서 생성하기
  • R 마크다운으로 작성한 보고서와 R로 작성한 소프트웨어를 섞어쓴다.

  • 포맷을 제어하는데 덩어리 선택옵션(chunk options)으로 지정한다.

  • knitr 팩키지를 사용해서 문서를 PDF를 비롯한 다른 포맷으로 변환시킨다.

좋은 소프트웨어 작성법
  • 프로젝트 폴더를 구조화 시키고, 잘 조직화하고, 깔끔하게 만든다.

  • 방법(how)이 아닌 무엇(what), 이유(Why)를 문서에 남긴다.

  • 프로그램을 짧고 단일 목적을 갖는 함수로 분해한다.

  • 다시 실행가능한 테스트 코드를 작성한다.

  • 여러분이 반복하지 마라.

  • 여러분이 반복하지 마라.

  • 명칭, 들여쓰기, 다른 코딩 스타타일에도 일관성을 유지한다.

Reference

Introduction to R and RStudio

Project management with RStudio

Seeking help

Data structures

Individual values in R must be one of 5 data types, multiple values can be grouped in data structures.

Data types

Basic data structures in R:

Remember that matrices are really atomic vectors underneath the hood, and that data.frames are really lists underneath the hood (this explains some of the weirder behaviour of R).

Vectors

Factors

Lists

Matrices

Data Frames

Useful functions for querying data structures:

Exploring Data Frames

Subsetting data

Control flow

Creating publication quality graphics

Vectorization

Functions explained

Writing data

Split-apply-combine

Dataframe manipulation with dplyr

Dataframe manipulation with tidyr

Producing reports with knitr

Best practices for writing good code

Glossary

argument
A value given to a function or program when it runs. The term is often used interchangeably (and inconsistently) with parameter.
assign
To give a value a name by associating a variable with it.
body
(of a function): the statements that are executed when a function runs.
comment
A remark in a program that is intended to help human readers understand what is going on, but is ignored by the computer. Comments in Python, R, and the Unix shell start with a # character and run to the end of the line; comments in SQL start with --, and other languages have other conventions.
comma-separated values
(CSV) A common textual representation for tables in which the values in each row are separated by commas.
delimiter
A character or characters used to separate individual values, such as the commas between columns in a CSV file.
documentation
Human-language text written to explain what software does, how it works, or how to use it.
floating-point number
A number containing a fractional part and an exponent. See also: integer.
for loop
A loop that is executed once for each value in some kind of set, list, or range. See also: while loop.
index
A subscript that specifies the location of a single value in a collection, such as a single pixel in an image.
integer
A whole number, such as -12343. See also: floating-point number.
library
In R, the directory(ies) where packages are stored.
package
A collection of R functions, data and compiled code in a well-defined format. Packages are stored in a library and loaded using the library() function.
parameter
A variable named in the function’s declaration that is used to hold a value passed into the call. The term is often used interchangeably (and inconsistently) with argument.
return statement
A statement that causes a function to stop executing and return a value to its caller immediately.
sequence
A collection of information that is presented in a specific order.
shape
An array’s dimensions, represented as a vector. For example, a 5×3 array’s shape is (5,3).
string
Short for “character string”, a sequence of zero or more characters.
syntax error
A programming error that occurs when statements are in an order or contain characters not expected by the programming language.
type
The classification of something in a program (for example, the contents of a variable) as a kind of number (e.g. floating-point, integer), string, or something else. In R the command typeof() is used to query a variables type.
while loop
A loop that keeps executing as long as some condition is true. See also: for loop.