Tools -> Global Options -> Code -> Saving -> Serializaion -> Set 'UTF-8'
- 코드에 대한 설명을 쓰는 것
- 혹은 지금 당장은 사용하지 않지만 해당 코드를 그 자리에 세이브 할 때
- 주석을 뺄 때는 블록 씌워서 ctrl + Shift + c
#shift누르고 방향키 누르면 블록이 추가됨
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)