컬럼을 선택하는 방법, ggplot2를 이용하여 시각화, if ifelse for, function만들기
어려웠던 건 중첩함수와 그 안에 썼던 <<- 기호이다.
보통 프로그래밍을 하면 메서드를 여러개 만들어서 불러오는 형태이기 때문에 하나의 메서드 안에 모든 내용을 다 쓰는 것이 익숙하지 않다. 그리고 <<-기호를 이용하여 지역변수를 더 상위의 지역에까지 영향을 주는 것도 익숙하지 않은 개념이라 많이 써서 익숙해져야겠다.
============================= R =============================
rm(list=ls())
# 데이터 프레임 선언
d<- data.frame(x = c(1,2,3,4,5))
d
# x컬럼을 2로 나누었을 때 0이 되는 컬럼만
d[d$x %% 2 == 0,]
#1x1인 2로 나누는?
d[d$x %/% 2 == 0,]
#다차원으로 만드는 dim
#dim=(c(행크기,열크기,행렬갯수))
x <- array(1:12, dim = c(2,2,3))
x
#데이터구조들 설정
a <- 1
b <- c(1,2,3)
c <- data.frame(t=c(4,5))
d <- matrix(c(6,7))
e <- array(1:20,dim=c(2,5,2))
#리스트에 담기
f <- list(z1=a,z2=b,z3=c,z4=d,z5=e)
f
#리스트 풀기
h<-unlist(f)
h
#정렬
sort(h)
#구조확인
str(h)
#열부터 채우면서 열을 2개만 생성하는 매트릭스
x <- matrix(c(1,2,3,4), ncol = 2, byrow = T)
x
#역행렬 구하는 함수
solve(x)
x <- matrix(c(1,2,3,4,5,6,7,8,9), ncol = 3, byrow = T)
#전치행렬 구하는 함수
t(x)
#4열의 매트릭스 생성
matrix(1:12, ncol=4)
#3행 4열의 어레이(다차원 매트릭스) 생성
array(1:12, dim=c(3,4))
#2행 3열의 어레이를 2개 만든다. 범위가 넘어가는 경우 다시 처음부터 출력.
array(1:12, dim=c(2,3,5))
#만들어지는 어레이는 기본적으로 3차원 배열 구조이다.
x <- array(1:12, dim=c(2,2,3))
#[행선택, 열선택, 배열선택(,,1 or ,,2와 같은)]
x[1,1,1]
x[1,1,2]
x[1,1,3]
#-는 여기서도 동일하게 제외이다.
x[,,-1]
#요소를 일렬로 세워 하나씩 출력하는 명령문
x[1:15]
#3번째 어레이에서 2행을 제외한 나머지를 출력
x[-2,,3]
#3번째 어레이의 1부터 2행까지 모든 행과 열을 출력
x[1:2,,3]
#3번째 어레이만 출력
x[,,3]
#dim을 이용하면 어레이에 적용된 dim을 알 수 있다.
dim(x)
#리스트 구현. list(key=value,key,value,...)형태이다.
x<- list(name="높이",height=70)
x<- list(name='수열',height=c(1,3,4))
x
#리스트에 여러 데이터 타입 담
a<- 1
b<-data.frame(x=c(1,2,3),y=c("a","b","c"))
c<-matrix(c(1:12),ncol=2)
d<-array(1:20, dim = c(2,5,2))
e<-list(z1=a,z2=b,z3=c,z4=d)
e
class(e)
#리스트 내부에 리스트를 선언. json형태
list(a=list(val=c(1,2,3)), b=list(val=c(1,2,3,4)))
#리스트 내부에 $로 접근
x<-list(name="수열",height=c(1,3,5))
x$name
x$height
#인덱스로 접근.
#[index]<- 키와 값을 출력하고 싶을 때, [[index]]<-인덱스에 해당하는 값만 알고 싶을 때
x[1]
x[[1]]
x[2]
#박스플롯 출력하기
library("ggplot2")
mpg <- ggplot2::mpg
mpg
str(mpg)
class(mpg)
class(mpg$cty)
str(mpg$cty)
t<-boxplot(mpg$cty)
t
#제어문 if - 한 줄에 다 쓰는 걸 권장. 아니라면 들여쓰기를 잘 해야 한다.
if(T) {
print("aaa")
print("bbb")
}
x <- 20
if(x != 20){
print("dd");
} else {
print("tt");
}
y<-c(1,2,-3,-4,8)
#R의 삼항연산자
ifelse(y>0,"양수","음수")
#안에 함수를 더 써도 된다.
ifelse(y>0,ifelse(y>5,"dkd","양수"),"음수")
#제어문 for
for(i in 1:10) print(i)
1:10 #요거랑 같아서 for는 잘 안 쓴다.
#함수
f <- function(x,y){ print(x); print(y)}
f("adsf","ewf")
#매개변수 값을 어떻게 전달하느냐에 따라서 다르다.
f(y=1,x=5)
#매개변수를 다 선언하지 않고도 ...으로 값을 넘겨줄 수 있다.
g <- function(z,...){
print(z)
f(...)
}
g(1,2,3)
#전역변수에 접근하는 function
x <- 1
f <- function(){
print(x)
}
f()
#중첩함수
k<-function(){
a<-1
g<-function(){
a<-2
print(a) #2
}
g()
print(a) #1
}
i<-function(){
a<-1
g<-function(){
a<<-2
print(a) #2
}
g()
print(a) #2
}
k()
i() # '<<-'는 일시적으로 가장 우선순위가 높은 객체값으로 설정하는 기호이다.
============================= R =============================
'프로그래밍 > Python, R 프로그래밍' 카테고리의 다른 글
[Python] Python 4일차 - 1 (0) | 2018.05.15 |
---|---|
[Python] Python 3일차 (0) | 2018.05.14 |
[Python] Python 2일차 (0) | 2018.05.11 |
[R] R 2일차 (0) | 2018.05.11 |
[R] R 1일차 (0) | 2018.05.10 |