R프로그래밍 2 - 변수와 자료형

Jesy·2021년 6월 6일
0

R프로그래밍

목록 보기
2/3

Incording Option Setting

Tools -> Global Options -> Code -> Saving -> Serializaion -> Set 'UTF-8'

주석

  1. 코드에 대한 설명을 쓰는 것
  2. 혹은 지금 당장은 사용하지 않지만 해당 코드를 그 자리에 세이브 할 때
  3. 주석을 뺄 때는 블록 씌워서 ctrl + Shift + c

#shift누르고 방향키 누르면 블록이 추가됨

Variable assignment


123456789 + 123456789

x = 123456789 

2 * x

3 * x

x <- 1 + 2 # 일반적으로 <- 이 방향으로 씀.

x

x = 10 + 2

단, = 로 변수할당 할 경우, 함수 인자와 겹치기 때문에 에러가 발생할 수 있어 <-로 사용하기

Example 1

#Variable assignment

system.time (x <- 1)

​

Error occurred

system.time (x = 1)

​

변수 할당시 함수 인자로의 오류회피방법 = 괄호 한 번 더 쓰기

system.time ((x = 1))

​

​

데이터 형태 실습 is/as

x <- 1

typeof(x)

​

is.integer(x)

as.double(x)

typeof(x)

​

y <- 2L

typeof(y)

is.integer(y)

​

z <- as.integer(x)

typeof(z)

is.double(z)

​

x<- 1+ 2i

typeof(x)

as.double(x) 

복소수를 double로 바꾸면 복소수 부분이 삭제되고 double부분만 도출됨. warning message 뜸 (복소수부분은 강제로 삭제된다는 내용)

y <- 1.5

as.integer(y) 

#실수를 정수 처리 할 경우 소숫점 아래 부분을 버림(반올림 X)

#Character

a <- "정승연"

a

b <- "97"

b

y

as.character(y)

typeof(a)

#논리자료형

#Truth value

TRUE

T

FALSE

F

#less than

2<3

#Greater than

3>7

#Equals

1==(3-2)

"Seungyeon"==""

"가">"나"

"ㄱ"<"ㄴ"

"20211231">"20210101"

"20210101"=="210101" #원래는 같은 날짜를 표현하는 것이므로같아야하는데 자리수를 맞추지 않을 경우 false로 답이 나옴옴

1==TRUE

as.integer(TRUE)

0==FALSE

as.integer(FALSE)

!TRUE

!FALSE

TRUE != FALSE

1 != 2

1 == 2

TRUE & FALSE

TRUE & TRUE

FALSE & FALSE

FALSE & TRUE

TRUE | TRUE

TRUE | FALSE

FALSE | TRUE

FALSE | FALSE

2 < 5 < 7 #계산 불가능

2 < 5 & 5 < 7 # 2가 5보다 크고, 5가 7보다 작는가를 나타낼 때 & 쓰기

#x는 1보다 크거나 같고 또는 -1보다 작거나 같나?

x = 1

1 <= x

-1 >= x

1 <= x | -1 >= x

as.integer("a")

as.integer("1")

as.double("1")

x <- NA

y <- NULL

x <- c(1,2,3)

y <- c("a", "b", "c")

z <- c(TRUE, FALSE, TRUE, FALSE)

z

w <- c(1, "a", "b")

v <- c(TRUE, FALSE, "a", 3) #진리값과 숫자를 같이 넣었지만 문자로 나타내어짐.

#벡터에 이름 지정

height <- c("김" = 172, "이" = 156,

"박" = 180, "최" = 170)

height

height <- c(172,156,180,170) # 이름 없는 객체 설정

names(height) # 아직 height에는 이름 없음

names(height) <- c("김", "이", "박", "최") # 명명

names(height) #이름확인

names(height) <-c("박", "이", "김", "최") #이름변경

names(height)

#console창에서 [] 의 의미

x <- seq(1, 100, 2)

x

'[]'를 확인해보면 대괄호의 바로 오른쪽 원소가 벡터에서 몇번째인지 알려줌.

R.version

#Factor

x <- c("10대", "20대", "30대", "10대", "10대", "30대", "10대", "10대")

table(x)

y <- c(1, 2, 3, 1, 1, 3)

1 <- "10대"

2 <- "20대"

3 <- "30대" #이거 어떻게 하는걸까?

x

y <- factor(x)

y

#console창에서 출력된 레벨 순서대로 1,2,3 ... 으로.

as.integer(y) #factor는 숫자로 변환 가능함. 변환시 각 레벨로 바뀐다.

#levels 함수 => level의 범주 추가하는 함수.

y <- factor(x,

levels = c("10대", "20대", "30대", "40대")) #즉, 자료의 벡터 상에서는 10대, 20대, 30대 값 밖에 없지만, 레벨을 추가할 때 사용할 수 있다.=> 코드의 오류 발생을 방지하기 위해 알아둘 것.

table(y)

#NA와 NULL의 차이

x <- c(1, 2, NA, 3)

y <- c(1, 2, NULL, 3)

#Matrix

x <- c(1, 2, 3, 4)

matrix(x, 2, 2, TRUE) #인자의 위치를 바꾸는 대신 인자의 값을 정확하게 할당 하고싶으면 인자 이름 작성하기.

x <- c(1,2,3,4,5,6)

x <- matrix(x, 2)

x

colnames(x) <- c("a", "b", "c")

rownames(x) <- c("a", "b")

x

#array

x <- c(1,2,3,4,5,6,7,8)

x1 <- array(x)

x1

x2 <- array(x, dim = c(4, 2))

x2

matrix (x, nrow = 4, ncol = 2)

x3 <- array(x, dim = c(2, 2, 2))

x3

x4 <- array(c(x, x), dim = c(2, 2, 2, 2))

x4

#Data Frame

df <- data.frame(c(1, 2, 3), c(2, 3, 4))

df

df <- data.frame(a = c(1, 2, 3), b = c(2, 3, 4)) #tag = value 형식으로 작성해서 행의 이름을 붙임.

df

df <- data.frame(name = c("Won", "Lee", "Choi", "Su"),

gender = c("M", "F", "M", "F"),

height = c(178, 170, 210, 165),

weight = c(62, 50, 100, 48))

str(df)

str(x3)

df2 <- data.frame(name = c("Won", "Lee", "Choi", "Su"),

gender = c("M", "F", "M", "F"),

height = c(178, 170, 210, 165),

weight = c(62, 50, 100, 48),

stringsAsFactors = TRUE)

str(df2) #name이 factor이 됨.

colnames(df2) <- c("a", "b", "c", "d")

colnames(df2)

df2

#list

x <- c(1, 2, 3)

X <- matrix(c(1, 2, 3, 4), 2, 2)

A <- array(c(1, 2, 3, 4, 5, 6, 7, 8), dim = c(2, 2, 2))

A

df

l <- list(x, X, A, df)

l <- list ( a = x, b= X, C = A, d = df)

l #각 원소에 이렇게 이름을 부여해서 인덱싱, 슬라이싱할 수 있다.

str(l)

profile
잡학꾸러기

0개의 댓글