SlideShare a Scribd company logo
R 프로그래밍 기초 #1 
R의 설치 및 기본 데이타 형 
2014.11.11 조대협 http://bcho.tistory.com
R 설치 및 환경 
• BLAS( Basic Linear Algebra System) 
– 리눅스에는 행렬과, 벡터의 내적과 선형 대수 연산을 수행하기 위한 라이브러리 
– Reference implementation (구현체에 따라 성능 차이가 많이남) 
• libblas 
• ATLAS implementation (libatlas) 
• OpenBLAS implementation (libopenblas) 
• R Benchmark 를 이용하여 라이브러리 성능 측정 
• R 개발 환경 
– R Studio (vi 에디터, emacs 에디터 형 플러그인 有)
패키지관리 
• CRAN을 이용하여, 패키지 설치 가능 
• R 스튜디오 “Packages”메뉴에서 관리 가능 (설치, 목록보기, 삭제등) 
명령 예제 설명 
install.package(“ 
패키지 
명”,dependency) 
install.package(“benchmark 
”,TRUE); 
dependency = 
[NA|TRUE|FALSE] 
TRUE이면, 의존성 있는 패키 
지가 함께 설치됨 
update.packages( 
ask=TRUE); 
현재 설치되어 있는 패키지중 
에 업데이트가 있으면 설치한 
다. 
ask=FALSE이면, 물어보지 
않고 모든 패키지를 최신 버전 
으로 업데이트 한다. 
library(“패키지 
명”,help) 
패키지를 로드하여 사용할 준 
비를 한다. cf. Import
변수 및 함수 인자 정의 
• 변수 
– 변수명 
• 알파벳 또는 “.”으로 시작해야 한다. 
• 알파벳,숫자, “_”, “.” 사용 가능 
※ “-”는 사용 불가능함. 
– 변수값 할당 
• `=` 또는 <-, <<- 사용 
• 함수 인자 정의 
foo(a,b,c=3,d=4) 
• foo(1,2) : a=1,b=2,c=3,d=4 
• foo(1,2,99) : a=1,b=2,c=99,d=4 
• foo(10,20,30,a=99) : a=99,b=10,c=20,d=30
스칼라 
• 단일 차원의 값 (1차원 값) 
• NA : “데이타 값이 없음” 을 표현. is.na(x)로 체크 cf. NULL 
• NULL : “변수가 초기화 되지 않음” 
• 문자열 : char와 같은 단일 문자타입은 없음. 문자열을 ‘’또는 “”로 묶는다 
• 진리값 : TRUE,FALSE로 표현 
– &(AND),|(OR),!(NOT) 연산자 사용 가능  벡터의 요소별 연산 
c(TRUE,TRUE) & c(TRUE,FALSE) = TRUE,FALSE 
– &&, || (두개의 요소 연산)
팩터 
• 범주형 데이타 (cf. Enumeration) 
– 명목형 (Nominal) 
– 순서형 (Ordinal) 
factor(“이름”,”값의 레벨”,순서여부 디폴트는 FALSE) 
ex) sex<-factor(“m”,c(“male”,”female”) 
명령 예제 설명 
nlevel(x) nlevel(sex) 팩터의 레벨 개수 
levels(x) 
levels(sex) 
levels(sex)<-c(“m”, “f”) 레벨값 변경 
levels(sex)[1] 
levels(sex)[2] 
팩터의 레벨값을 리턴함 
is.factor(x) is.factor(sex) 해당 변수가 팩터인지 리턴 
ordered(“이름”, “값의레벨”) 
> s <- ordered("a",c("a","b","c")) 
> s [1] a 
Levels: a < b < c 
순서형 팩터 생성 
is.ordered(x)
벡터 
• 일종의 배열의 개념으로 다음과 같은 특성이 있음 
– 슬라이스 : 배열의 일부를 잘라낸 뒤, 이를 또 배열 처럼 사용 가능 
– 셀에 이름 바구 가능 
• 선언 : c(값1,값2,값3) 
명령 예제 설명 
c(“값1”,”값2”,…”); x<-c(1,2,3) 벡터 생성 
names(x)  c(“이름1”,”이름2”,…) names(x) <- c(“c1”, “c2”, “c3”); 각 셀에 이름을 지정함 
names(x) names(x) 각 셀의 이름을 리턴함 
x[n] x[2] N번째 요소를 리턴 
x[-n] x[-2] N번째 요소를 제외하고 리턴 
x[“셀이름”] x[“c1”] “셀이름”으로 지정된 벤터의 요소를 반환 
x[start:end] x[1:3] 벡터의 start~end까지 요소을 반환 
length(x) 벡터의 길이 
nrow(x) 행렬에만 사용 가능 
NROW(x) 벡터와 행렬 모두 사용 가능 
※ 벡터의 요소는 1 부터 시작함 x[1] 
※ 벡터는 열벡터를 사용함 
열벡터 c : 한열로 m*1 행렬 
행벡터 r: 한행으로 된 1*n 행렬
벡터의 연산 
명령 예제 설명 
identical(x,y) - 두 벡터가 동일한지 비교 
union(x,y) 
> x 
c1 c2 c3 c4 c5 
1 2 3 4 5 
> y 
[1] -1 4 5 6 
> union(x,y); 
[1] 1 2 3 4 5 -1 6 
합집합 
x에만 있는 값이 먼저 들어가고, 그 다음 x,y에 공통적으로 있는 값, 그리 
고 y에만 있는 값 순으로 합쳐짐 
intersect(x,y) - 교집합 
setdiff(x,y) - 차집합 
setequal(x,y) 
> a<-c(1,1,2,3); 
> b<-c(1,2,3); 
> identical(a,b); [1] FALSE 
> setequal(a,b); [1] TRUE 
벡터를 집합으로 (중복제거) 취급하여 비교 
value %in%x > 1 %in% x [1] TRUE 벡터 x에 “value”가 저장되어 있는지 판단 
x+n 
> x 
c1 c2 c3 c4 c5 1 2 3 4 5 
> x+1 
c1 c2 c3 c4 c5 
벡터의 각 요소에 n을 더함 
※ 마찬가지로 *,/,-,= 연산자 사용 가능 
연속된 숫자로 구성된 벡터 
seq(from,to,by) 
> z<-seq(1,10,2) 
> z 
[1] 1 3 5 7 9 
from~to까지 by씩 증가하는 벡터 생성 
※ by는 생략하면 1 
1씩 증가하는 경우 간단하게 x<-3:7 ,x<-7:3식으로 “seq”생략 가능 
반복된 값을 저장한 벡터 
rep(x,times,each) 
> rep(1:2,times=5); 
[1] 1 2 1 2 1 2 1 2 1 2 
> rep(1:2,each=5) 
[1] 1 1 1 1 1 2 2 2 2 2 
> rep(1:2,each=5,times=2) 
[1] 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 
x 벡터를 times 횟수 만큼 반복. 반복시 each 횟수 만큼 개별 요소를 반복
리스트 
• 자바의 해시 테이블과 유사 (key,value) 
x  list(key=value,key=value…) 
> x <-list(name='terry',age=100) 
> x 
$name 
[1] "terry" 
$age 
[1] 100 
> x['name'] 
$name 
[1] "terry" 
> x$age 
$age 
[1] 100 
명령 예제 설명 
x$key x$age > 100 리스트 x에서 key에 해당 하는 값 
x[n] x[1] > $name,[1] “terry” 리스트 x에서 n번째 key,value 값 
x[[n]] x[[1]] > [1] “terry” 리스트 x에서 n번째 value 값 
• 리스트 안에, 리스트를 넣는 중첩형 리스트 지원 
> c<-list(a=list(val=c(1,2,3)),b=list(val=c(1,2,3,4))); 
> c 
$a 
$a$val 
[1] 1 2 3 
$b 
$b$val 
[1] 1 2 3 4
행렬 
• 행렬 생성 
matrix( data, nrow=행수,ncol=컬럼수,byrow=FALSE,dmnames=NULL) 
• data : 행렬에 들어갈 데이타 
• nrow : 행렬의 행수 
• ncol:행렬의 컬럼 수 
• byrow :값을 로우 우선으로 넣음. (FALSE이면, 행렬을 세로로 먼저 채움, TRUE이면 가로로 먼저 채움) 
• dmnames 각차원에 대한 이름 
 matrix(c(1,2,3,4,5,6,7,8,9),nrow=3) 
 [,1] [,2] [,3] 
 [1,] 1 4 7 
 [2,] 2 5 8 
 [3,] 3 6 9 
 > matrix(c(1,2,3,4,5,6,7,8,9),nrow=3,byrow=TRUE) 
 [,1] [,2] [,3] 
 [1,] 1 2 3 
 [2,] 4 5 6 
 [3,] 7 8 9 
 matrix(1:9,nrow=3,dimnames=list(c("r1","r2" 
,"r3"),c("c1","c2","c3"))) 
 c1 c2 c3 
 r1 1 4 7 
 r2 2 5 8 
 r3 3 6 9
행렬 
• 행렬 함수 
명령 예제 설명 
A[i,j] 행렬 A의 i,j 원소 
A[1:3,] 행렬 1~3열 
A[-2,] 행렬에서 2열을 제외한값 
A[,1:2] 행렬에서 1,2컬럼의 값 
A+x 행렬의 모든 원소에 스칼라 x를 더한다 
A+B 전치행렬 
행렬 A와 B의 합 
A %*% B 행렬 A와 B의 곱 
t(A) 전치행렬 (transposed matrix) 퐴푇 
solve(a,b) 행렬a*행렬x = 행렬 b에서, 행렬 x를 구한다. (다차 방정식을 풀때 사용) 
solve(x) x의 역행렬 (역행렬 퐴*퐴−1 = 퐸 , 퐸는 단위 행렬) 
dim(x) 행렬 x의 차원수 
nrow(x) 행렬 x의 행수 
ncol(x) 행렬 x의 열수 
det(x) 행렬 x의 행렬식 (determinant)
배열 
• 행렬이 2차원 데이타라면, 배열은 다차원 데이타 
array( 데이타, dim=length(data),dimnames=NULL) 
• 데이타 : 배열의 데이타 
• dim : 행렬의 차원, ex) dim=c(3,4) 3x4 배열 dim=c(2,2,3) 2x2x3 배열 
※ 배열은 세로(열) 부터 채워짐 
 a = array(1:12,dim=c(3,4)) 
 > a 
 [,1] [,2] [,3] [,4] 
 [1,] 1 4 7 10 
 [2,] 2 5 8 11 
 [3,] 3 6 9 12 
명령 예제 설명 
A[i,j] 배열의 i,j 원소 
A[1:10,] 배열의 1:10 열
데이타 프레임 
• 데이타 프레임은 일종의 액셀의 스프레드시트와 같이 데이타를 정리하는 타입 
• 각 컬럼의 ROW수가 같아야 함 
data.frame( 
컬럼명=데이타, 
컬럼명=데이타 
: 
 f <- data.frame( x=1:9, y=11:19)) ; 
 > f 
 x y 
 1 1 11 
 2 2 12 
 3 3 13 
 4 4 14 
 5 5 15 
 6 6 16 
 7 7 17 
 8 8 18 
 9 9 19 
 > f <- data.frame( x=1:9, y=11:30) 
 Error in data.frame(x = 1:9, y = 11:30) : arguments 
imply differing number of rows: 9, 20
데이타 프레임 
명령 예제 설명 
f$colname 데이타프레임 f에서 colname으로 된 컬럼의 데이타 리턴 
f$colname<-y 데이타 프레임 f에서 colname으로 된 컬럼의 값을 y로 세팅 
str(f) 데이타 프레임 f의 구조를 리턴 
f[i,j,drop=false] 
f[,c(“x”)] 컬럼명이 x인 컬럼만 
f[,names(f) %in% c(“b”,”c”)] b,c 컬럼만 선택 
f[,!names(f) %in% c(“a”)] 
컬럼명이 a인것만 빼고 
데이타 프레임 i열,j값 
drop=FALSE이면, 데이타들만을 리턴 
drop=TRUE이면, 데이타 프레임형 데이타 형으로 리턴 
head(x,n=6L) head(x) 처음 6항만 리턴함 (디폴트가 6항) 데이타 프레임 x에서 처음 N항을 리턴 
tail(x,n=6L) tail(x) 마지막 6항만을 리턴함 (디폴트가 6항) 데이타 프레임 x에서 마지막 N항을 리턴함 
View(f) 
※ 대소문자주의 
데이타 프레임 f를 뷰 윈도우로 보여줌 (윈도우 창을 띄워줌) 
(편집은 안되더라) 
 class(f[1:10,1]) 
 [1] "integer" 
 > class(f[1:10,1,FALSE]) 
 [1] "data.frame"
타입 판별 및 변환 
• 타입 판별 
– class(x) : 객체 x 의 클래스 반환 
– str(x) : 객체 x 내부의 데이타 구조 
– is.factor(x),is.numeric(x),is.character(x) : 문자열인지 판단,is.matrix(x),is.array(x),is.data.frame(x) 
• 타입 변환 
– as.factor(x) : x를 factor형으로 변환 
– as.numerix(x),as.character(x),as.matrix(x),as.array(x),as.data.frame(x)

More Related Content

PPTX
R 프로그래밍 기본 문법
PPTX
R 프로그래밍-향상된 데이타 조작
PPTX
R 프로그램의 이해와 활용 v1.1
PDF
알고리즘과 자료구조
PDF
R 스터디 네번째
PDF
R 스터디 첫번째
PDF
R 스터디 두번째
PDF
R 스터디 세번째
R 프로그래밍 기본 문법
R 프로그래밍-향상된 데이타 조작
R 프로그램의 이해와 활용 v1.1
알고리즘과 자료구조
R 스터디 네번째
R 스터디 첫번째
R 스터디 두번째
R 스터디 세번째

What's hot (20)

PPTX
Data Mining with R CH1 요약
PDF
R 기초 : R Basics
PPTX
R과 기초통계 : 02.기술통계-자료나타내기
PPTX
R intro
PDF
R_datamining
PPTX
Python+numpy pandas 2편
PPT
1.자료구조와 알고리즘(강의자료)
PDF
알고리즘 스터디(정렬) Seungdols
PDF
5. queue
PDF
4. stack
PPTX
통계자료 분석을 위한 R
PPTX
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
PPTX
빠르게 활용하는 파이썬3 스터디(ch1~4)
PDF
3. linked list
PDF
Tensorflow regression 텐서플로우 회귀
PDF
Example
PDF
R 시작해보기
PPTX
파이썬 Collections 모듈 이해하기
PDF
4.convolutional neural networks
PPTX
파이썬+함수이해하기 20160229
Data Mining with R CH1 요약
R 기초 : R Basics
R과 기초통계 : 02.기술통계-자료나타내기
R intro
R_datamining
Python+numpy pandas 2편
1.자료구조와 알고리즘(강의자료)
알고리즘 스터디(정렬) Seungdols
5. queue
4. stack
통계자료 분석을 위한 R
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
빠르게 활용하는 파이썬3 스터디(ch1~4)
3. linked list
Tensorflow regression 텐서플로우 회귀
Example
R 시작해보기
파이썬 Collections 모듈 이해하기
4.convolutional neural networks
파이썬+함수이해하기 20160229
Ad

Similar to R 기본-데이타형 소개 (20)

PDF
Python
PDF
Rdatamining
PDF
데이터베이스 시스템 chapter3_STG박하은
PDF
통계자료분석을 ㅇ
PDF
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
PPTX
파이썬 스터디 2주차
PDF
Scalability
PDF
Scala, Scalability
PDF
파이썬 기본 문법
PDF
R을 이용한 데이터 분석
PDF
2.linear regression and logistic regression
PPTX
자바프로그래머를 위한 스칼라
PDF
집단지성 프로그래밍 03-군집발견-03
PDF
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
PPTX
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
PPTX
Sicp 2.2 계층 구조 데이터와 닫힘 성질
PPTX
파이썬정리 20160130
PDF
R 프로그래밍을 이용한 야생동물 행동권(HR) 분석
PDF
2.supervised learning
PPTX
Python
Rdatamining
데이터베이스 시스템 chapter3_STG박하은
통계자료분석을 ㅇ
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 스터디 2주차
Scalability
Scala, Scalability
파이썬 기본 문법
R을 이용한 데이터 분석
2.linear regression and logistic regression
자바프로그래머를 위한 스칼라
집단지성 프로그래밍 03-군집발견-03
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
Sicp 2.2 계층 구조 데이터와 닫힘 성질
파이썬정리 20160130
R 프로그래밍을 이용한 야생동물 행동권(HR) 분석
2.supervised learning
Ad

More from Terry Cho (20)

PPTX
Kubernetes #6 advanced scheduling
PPTX
Kubernetes #4 volume &amp; stateful set
PPTX
Kubernetes #3 security
PPTX
Kubernetes #2 monitoring
PPTX
Kubernetes #1 intro
PPTX
머신러닝으로 얼굴 인식 모델 개발 삽질기
PPTX
5. 솔루션 카달로그
PPTX
4. 대용량 아키텍쳐 설계 패턴
PPTX
3. 마이크로 서비스 아키텍쳐
PPTX
서비스 지향 아키텍쳐 (SOA)
PPTX
1. 아키텍쳐 설계 프로세스
PPTX
애자일 스크럼과 JIRA
PPTX
REST API 설계
PPTX
모바일 개발 트랜드
PPTX
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
PPTX
Micro Service Architecture의 이해
PPTX
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
PPTX
Redis data modeling examples
PPTX
빠르게훓어보는 Node.js와 Vert.x
PPTX
대용량 분산 아키텍쳐 설계 #5. rest
Kubernetes #6 advanced scheduling
Kubernetes #4 volume &amp; stateful set
Kubernetes #3 security
Kubernetes #2 monitoring
Kubernetes #1 intro
머신러닝으로 얼굴 인식 모델 개발 삽질기
5. 솔루션 카달로그
4. 대용량 아키텍쳐 설계 패턴
3. 마이크로 서비스 아키텍쳐
서비스 지향 아키텍쳐 (SOA)
1. 아키텍쳐 설계 프로세스
애자일 스크럼과 JIRA
REST API 설계
모바일 개발 트랜드
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
Micro Service Architecture의 이해
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
Redis data modeling examples
빠르게훓어보는 Node.js와 Vert.x
대용량 분산 아키텍쳐 설계 #5. rest

R 기본-데이타형 소개

  • 1. R 프로그래밍 기초 #1 R의 설치 및 기본 데이타 형 2014.11.11 조대협 http://bcho.tistory.com
  • 2. R 설치 및 환경 • BLAS( Basic Linear Algebra System) – 리눅스에는 행렬과, 벡터의 내적과 선형 대수 연산을 수행하기 위한 라이브러리 – Reference implementation (구현체에 따라 성능 차이가 많이남) • libblas • ATLAS implementation (libatlas) • OpenBLAS implementation (libopenblas) • R Benchmark 를 이용하여 라이브러리 성능 측정 • R 개발 환경 – R Studio (vi 에디터, emacs 에디터 형 플러그인 有)
  • 3. 패키지관리 • CRAN을 이용하여, 패키지 설치 가능 • R 스튜디오 “Packages”메뉴에서 관리 가능 (설치, 목록보기, 삭제등) 명령 예제 설명 install.package(“ 패키지 명”,dependency) install.package(“benchmark ”,TRUE); dependency = [NA|TRUE|FALSE] TRUE이면, 의존성 있는 패키 지가 함께 설치됨 update.packages( ask=TRUE); 현재 설치되어 있는 패키지중 에 업데이트가 있으면 설치한 다. ask=FALSE이면, 물어보지 않고 모든 패키지를 최신 버전 으로 업데이트 한다. library(“패키지 명”,help) 패키지를 로드하여 사용할 준 비를 한다. cf. Import
  • 4. 변수 및 함수 인자 정의 • 변수 – 변수명 • 알파벳 또는 “.”으로 시작해야 한다. • 알파벳,숫자, “_”, “.” 사용 가능 ※ “-”는 사용 불가능함. – 변수값 할당 • `=` 또는 <-, <<- 사용 • 함수 인자 정의 foo(a,b,c=3,d=4) • foo(1,2) : a=1,b=2,c=3,d=4 • foo(1,2,99) : a=1,b=2,c=99,d=4 • foo(10,20,30,a=99) : a=99,b=10,c=20,d=30
  • 5. 스칼라 • 단일 차원의 값 (1차원 값) • NA : “데이타 값이 없음” 을 표현. is.na(x)로 체크 cf. NULL • NULL : “변수가 초기화 되지 않음” • 문자열 : char와 같은 단일 문자타입은 없음. 문자열을 ‘’또는 “”로 묶는다 • 진리값 : TRUE,FALSE로 표현 – &(AND),|(OR),!(NOT) 연산자 사용 가능  벡터의 요소별 연산 c(TRUE,TRUE) & c(TRUE,FALSE) = TRUE,FALSE – &&, || (두개의 요소 연산)
  • 6. 팩터 • 범주형 데이타 (cf. Enumeration) – 명목형 (Nominal) – 순서형 (Ordinal) factor(“이름”,”값의 레벨”,순서여부 디폴트는 FALSE) ex) sex<-factor(“m”,c(“male”,”female”) 명령 예제 설명 nlevel(x) nlevel(sex) 팩터의 레벨 개수 levels(x) levels(sex) levels(sex)<-c(“m”, “f”) 레벨값 변경 levels(sex)[1] levels(sex)[2] 팩터의 레벨값을 리턴함 is.factor(x) is.factor(sex) 해당 변수가 팩터인지 리턴 ordered(“이름”, “값의레벨”) > s <- ordered("a",c("a","b","c")) > s [1] a Levels: a < b < c 순서형 팩터 생성 is.ordered(x)
  • 7. 벡터 • 일종의 배열의 개념으로 다음과 같은 특성이 있음 – 슬라이스 : 배열의 일부를 잘라낸 뒤, 이를 또 배열 처럼 사용 가능 – 셀에 이름 바구 가능 • 선언 : c(값1,값2,값3) 명령 예제 설명 c(“값1”,”값2”,…”); x<-c(1,2,3) 벡터 생성 names(x)  c(“이름1”,”이름2”,…) names(x) <- c(“c1”, “c2”, “c3”); 각 셀에 이름을 지정함 names(x) names(x) 각 셀의 이름을 리턴함 x[n] x[2] N번째 요소를 리턴 x[-n] x[-2] N번째 요소를 제외하고 리턴 x[“셀이름”] x[“c1”] “셀이름”으로 지정된 벤터의 요소를 반환 x[start:end] x[1:3] 벡터의 start~end까지 요소을 반환 length(x) 벡터의 길이 nrow(x) 행렬에만 사용 가능 NROW(x) 벡터와 행렬 모두 사용 가능 ※ 벡터의 요소는 1 부터 시작함 x[1] ※ 벡터는 열벡터를 사용함 열벡터 c : 한열로 m*1 행렬 행벡터 r: 한행으로 된 1*n 행렬
  • 8. 벡터의 연산 명령 예제 설명 identical(x,y) - 두 벡터가 동일한지 비교 union(x,y) > x c1 c2 c3 c4 c5 1 2 3 4 5 > y [1] -1 4 5 6 > union(x,y); [1] 1 2 3 4 5 -1 6 합집합 x에만 있는 값이 먼저 들어가고, 그 다음 x,y에 공통적으로 있는 값, 그리 고 y에만 있는 값 순으로 합쳐짐 intersect(x,y) - 교집합 setdiff(x,y) - 차집합 setequal(x,y) > a<-c(1,1,2,3); > b<-c(1,2,3); > identical(a,b); [1] FALSE > setequal(a,b); [1] TRUE 벡터를 집합으로 (중복제거) 취급하여 비교 value %in%x > 1 %in% x [1] TRUE 벡터 x에 “value”가 저장되어 있는지 판단 x+n > x c1 c2 c3 c4 c5 1 2 3 4 5 > x+1 c1 c2 c3 c4 c5 벡터의 각 요소에 n을 더함 ※ 마찬가지로 *,/,-,= 연산자 사용 가능 연속된 숫자로 구성된 벡터 seq(from,to,by) > z<-seq(1,10,2) > z [1] 1 3 5 7 9 from~to까지 by씩 증가하는 벡터 생성 ※ by는 생략하면 1 1씩 증가하는 경우 간단하게 x<-3:7 ,x<-7:3식으로 “seq”생략 가능 반복된 값을 저장한 벡터 rep(x,times,each) > rep(1:2,times=5); [1] 1 2 1 2 1 2 1 2 1 2 > rep(1:2,each=5) [1] 1 1 1 1 1 2 2 2 2 2 > rep(1:2,each=5,times=2) [1] 1 1 1 1 1 2 2 2 2 2 1 1 1 1 1 2 2 2 2 2 x 벡터를 times 횟수 만큼 반복. 반복시 each 횟수 만큼 개별 요소를 반복
  • 9. 리스트 • 자바의 해시 테이블과 유사 (key,value) x  list(key=value,key=value…) > x <-list(name='terry',age=100) > x $name [1] "terry" $age [1] 100 > x['name'] $name [1] "terry" > x$age $age [1] 100 명령 예제 설명 x$key x$age > 100 리스트 x에서 key에 해당 하는 값 x[n] x[1] > $name,[1] “terry” 리스트 x에서 n번째 key,value 값 x[[n]] x[[1]] > [1] “terry” 리스트 x에서 n번째 value 값 • 리스트 안에, 리스트를 넣는 중첩형 리스트 지원 > c<-list(a=list(val=c(1,2,3)),b=list(val=c(1,2,3,4))); > c $a $a$val [1] 1 2 3 $b $b$val [1] 1 2 3 4
  • 10. 행렬 • 행렬 생성 matrix( data, nrow=행수,ncol=컬럼수,byrow=FALSE,dmnames=NULL) • data : 행렬에 들어갈 데이타 • nrow : 행렬의 행수 • ncol:행렬의 컬럼 수 • byrow :값을 로우 우선으로 넣음. (FALSE이면, 행렬을 세로로 먼저 채움, TRUE이면 가로로 먼저 채움) • dmnames 각차원에 대한 이름  matrix(c(1,2,3,4,5,6,7,8,9),nrow=3)  [,1] [,2] [,3]  [1,] 1 4 7  [2,] 2 5 8  [3,] 3 6 9  > matrix(c(1,2,3,4,5,6,7,8,9),nrow=3,byrow=TRUE)  [,1] [,2] [,3]  [1,] 1 2 3  [2,] 4 5 6  [3,] 7 8 9  matrix(1:9,nrow=3,dimnames=list(c("r1","r2" ,"r3"),c("c1","c2","c3")))  c1 c2 c3  r1 1 4 7  r2 2 5 8  r3 3 6 9
  • 11. 행렬 • 행렬 함수 명령 예제 설명 A[i,j] 행렬 A의 i,j 원소 A[1:3,] 행렬 1~3열 A[-2,] 행렬에서 2열을 제외한값 A[,1:2] 행렬에서 1,2컬럼의 값 A+x 행렬의 모든 원소에 스칼라 x를 더한다 A+B 전치행렬 행렬 A와 B의 합 A %*% B 행렬 A와 B의 곱 t(A) 전치행렬 (transposed matrix) 퐴푇 solve(a,b) 행렬a*행렬x = 행렬 b에서, 행렬 x를 구한다. (다차 방정식을 풀때 사용) solve(x) x의 역행렬 (역행렬 퐴*퐴−1 = 퐸 , 퐸는 단위 행렬) dim(x) 행렬 x의 차원수 nrow(x) 행렬 x의 행수 ncol(x) 행렬 x의 열수 det(x) 행렬 x의 행렬식 (determinant)
  • 12. 배열 • 행렬이 2차원 데이타라면, 배열은 다차원 데이타 array( 데이타, dim=length(data),dimnames=NULL) • 데이타 : 배열의 데이타 • dim : 행렬의 차원, ex) dim=c(3,4) 3x4 배열 dim=c(2,2,3) 2x2x3 배열 ※ 배열은 세로(열) 부터 채워짐  a = array(1:12,dim=c(3,4))  > a  [,1] [,2] [,3] [,4]  [1,] 1 4 7 10  [2,] 2 5 8 11  [3,] 3 6 9 12 명령 예제 설명 A[i,j] 배열의 i,j 원소 A[1:10,] 배열의 1:10 열
  • 13. 데이타 프레임 • 데이타 프레임은 일종의 액셀의 스프레드시트와 같이 데이타를 정리하는 타입 • 각 컬럼의 ROW수가 같아야 함 data.frame( 컬럼명=데이타, 컬럼명=데이타 :  f <- data.frame( x=1:9, y=11:19)) ;  > f  x y  1 1 11  2 2 12  3 3 13  4 4 14  5 5 15  6 6 16  7 7 17  8 8 18  9 9 19  > f <- data.frame( x=1:9, y=11:30)  Error in data.frame(x = 1:9, y = 11:30) : arguments imply differing number of rows: 9, 20
  • 14. 데이타 프레임 명령 예제 설명 f$colname 데이타프레임 f에서 colname으로 된 컬럼의 데이타 리턴 f$colname<-y 데이타 프레임 f에서 colname으로 된 컬럼의 값을 y로 세팅 str(f) 데이타 프레임 f의 구조를 리턴 f[i,j,drop=false] f[,c(“x”)] 컬럼명이 x인 컬럼만 f[,names(f) %in% c(“b”,”c”)] b,c 컬럼만 선택 f[,!names(f) %in% c(“a”)] 컬럼명이 a인것만 빼고 데이타 프레임 i열,j값 drop=FALSE이면, 데이타들만을 리턴 drop=TRUE이면, 데이타 프레임형 데이타 형으로 리턴 head(x,n=6L) head(x) 처음 6항만 리턴함 (디폴트가 6항) 데이타 프레임 x에서 처음 N항을 리턴 tail(x,n=6L) tail(x) 마지막 6항만을 리턴함 (디폴트가 6항) 데이타 프레임 x에서 마지막 N항을 리턴함 View(f) ※ 대소문자주의 데이타 프레임 f를 뷰 윈도우로 보여줌 (윈도우 창을 띄워줌) (편집은 안되더라)  class(f[1:10,1])  [1] "integer"  > class(f[1:10,1,FALSE])  [1] "data.frame"
  • 15. 타입 판별 및 변환 • 타입 판별 – class(x) : 객체 x 의 클래스 반환 – str(x) : 객체 x 내부의 데이타 구조 – is.factor(x),is.numeric(x),is.character(x) : 문자열인지 판단,is.matrix(x),is.array(x),is.data.frame(x) • 타입 변환 – as.factor(x) : x를 factor형으로 변환 – as.numerix(x),as.character(x),as.matrix(x),as.array(x),as.data.frame(x)