SlideShare a Scribd company logo
1 of 15
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

What's hot

Data Mining with R CH1 요약
Data Mining with R CH1 요약Data Mining with R CH1 요약
Data Mining with R CH1 요약Sung Yub Kim
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R BasicsYoonwhan Lee
 
R과 기초통계 : 02.기술통계-자료나타내기
R과 기초통계 : 02.기술통계-자료나타내기R과 기초통계 : 02.기술통계-자료나타내기
R과 기초통계 : 02.기술통계-자료나타내기Yoonwhan Lee
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편Yong Joon Moon
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)fmbvbfhs
 
알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdols알고리즘 스터디(정렬) Seungdols
알고리즘 스터디(정렬) Seungdolsseungdols
 
통계자료 분석을 위한 R
통계자료 분석을 위한 R통계자료 분석을 위한 R
통계자료 분석을 위한 RYoonwhan Lee
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개Terry Cho
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)SeongHyun Ahn
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기Yong Joon Moon
 
4.convolutional neural networks
4.convolutional neural networks4.convolutional neural networks
4.convolutional neural networksHaesun Park
 
파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229파이썬+함수이해하기 20160229
파이썬+함수이해하기 20160229Yong Joon Moon
 

What's hot (20)

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

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

데이터베이스 시스템 chapter3_STG박하은
데이터베이스 시스템 chapter3_STG박하은데이터베이스 시스템 chapter3_STG박하은
데이터베이스 시스템 chapter3_STG박하은ETRIBE_STG
 
통계자료분석을 ㅇ
통계자료분석을 ㅇ통계자료분석을 ㅇ
통계자료분석을 ㅇYoonwhan Lee
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)Tae Young Lee
 
Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface Higher order procedure2 with conventional interface
Higher order procedure2 with conventional interface fromitive
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, ScalabilityDongwook Lee
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법SeongHyun Ahn
 
R을 이용한 데이터 분석
R을 이용한 데이터 분석R을 이용한 데이터 분석
R을 이용한 데이터 분석simon park
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regressionHaesun Park
 
자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라Jong Gook Bae
 
집단지성 프로그래밍 03-군집발견-03
집단지성 프로그래밍 03-군집발견-03집단지성 프로그래밍 03-군집발견-03
집단지성 프로그래밍 03-군집발견-03Kwang Woo NAM
 
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)
2014.07.26 KSUG와 지앤선이 함께하는 테크니컬 세미나 - 나의 첫번째 자바8 람다식 (정대원)JiandSon
 
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 [GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용 Sehyeon Nam
 
Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질Sicp 2.2 계층 구조 데이터와 닫힘 성질
Sicp 2.2 계층 구조 데이터와 닫힘 성질aceigy6322
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
R 프로그래밍을 이용한 야생동물 행동권(HR) 분석
R 프로그래밍을 이용한 야생동물 행동권(HR) 분석R 프로그래밍을 이용한 야생동물 행동권(HR) 분석
R 프로그래밍을 이용한 야생동물 행동권(HR) 분석Byeong-Hyeok Yu
 
2.supervised learning
2.supervised learning2.supervised learning
2.supervised learningHaesun Park
 

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

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

More from Terry Cho

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

More from Terry Cho (20)

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