컬럼을 선택하는 방법, 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

+ Recent posts