프로그래밍 개론
-컴퓨터구조: CPU(두뇌,연산자이), 메모리/RAM(단기기억), 디스크(장기기억), 입출력(모니터,키보드..)
-컴퓨터기초: HW/SW
sw: 운영체제(windows os), app/프로그램(브라우저, 카카오톡..)
0과 1만 구분할수있다(1:전기가흐를때, 0:전기흐르지않을때)
-프로그래밍언어: 사람이 컴퓨터에게 명령을 내리는 방법
저급언어(기계어,어셈블리어): 사람이 이해하기 어려운,기계가 이해하기 쉬운 언어
고급언어(python,java,c): 사람이 이해하기 쉬운 표현
고급언어->변환(컴파일러,인터프리터)->기계어
-프로그램 동작원리
소스코드->(변환)기계어->실행
디스크->메모리 적재->CPU에서 명령어 해석/실행->출력장치(화면) 표시
*메모리 크기확인: 32G
1byte = 8 bit (2^8 = 256가지 수 표현), 00000000(2진수) = 0, 11111111(2진수) = 255
1KB = 1024 byte (2^10)
1MB = 1024 KB
1GB = 1024 MB
32G = 32 * 1024MB (2^35 Byte)
*R에서는 정수형 표현 4Byte 사용
*기타: 11111111 = 255인 이유 설명
b₇ b₆ b₅ b₄ b₃ b₂ b₁ b₀ (각각 0 또는 1)
= b₇×2⁷ + b₆×2⁶ + b₅×2⁵ + ... + b₁×2¹ + b₀×2⁰
프로그래밍 기초
- 변수
(개념) 값이 저장되는 저장공간
(문법) 변수명 할당연산자 값
msg <- "hello, world!" (msg변수에 ""문자열 할당한다)
(할당연산자는 오른쪽에서 왼쪽으로 할당한다)
msg = "hello, world!" (가능한데, <-더 권장, =는 함수의 argument값 전달시 사용?)
val <- 10
msg 공간을 가르킨다 [hello, world]
*변수를 사용하는 이유: 값을 저장해두고 재사용하기 위한 목적
(부연설명-생략) 책장에 책을 두는데, 라벨을 붙이는 개념이랑 유사
skip(R에서는 모든 변수가 객체이다(객체를 바인딩하는게 변수를 처리하는 방식))
- 변수명 명명(작명) 규칙
1) 영문자/숫자/마침표(.)/밑줄(_) 사용 가능
2) 첫 글자는 숫자가 될 수 없음
3) 이름에 띄어쓰기 사용 불가
4) 대소문자 구분, 변수명은 소문자로
5) 예약어는 사용불가(if, else, for, TRUE, FALSE, NA 등)
- 변수명 표기법
: snake표기법 권장
: (예전 base R) total.sales (dot.separated 많이 사용했었음)
- 변수 네이밍(best-practice)
변수는 명사형으로 기술
ex) my_name <- '홍길동'
#(함수 동사형) 함수: 특정 기능을 사전에 구현해둔 것(모듈)
write_file(), print_result()
(소문자) 지역변수
ex) val = 1
(대문자) 전역변수, 상수(불변의 고정값)
ex) MAX_VAL = 100
FILE_NAME = 'data.excel'
(logical 변수)is_를 앞에 붙인다.
ex) is_error = FALSE
- 자료형
: 데이터의 유형, 데이터 저장하는 방식
자료형 의미 예시
==============================================
수치형(numeric) 정수,실수 5, 3.14
문자형(chracter) 문자,문자열 "C", "hello" ('', "" 모두 가능)
논리형(logical) 참,거짓 TRUE, FALSE (대문자로 사용)
*numeric
(정수형) integer, (실수형) double
*문자,문자열
char:길이1, string:길이 0이상
R은 모두 character 형으로 간주
*TRUE = T, FALSE = F
약어로 T,F 라는 논리변수에 TRUE, FALSE 저장되어있다.
변수이기 때문에 변경가능하지만, 변경하지 않는것이 좋다.
*R은 동적 형변환 지원하는 언어(동적 타입 언어), 실행시에 자료형이 결정
ex) val <- 1
val <- "hello"
ex) 정적 타입 언어 예
int val = 5;
기타(skip)
(complex) 복소수
(raw) 이진데이터
-그외의 값
NULL : 값이 비어있음
ex) val <- NULL
NA : Not a available, 값이 없거나 알수없음 (결측값)
NaN : Not a number(수학적 오류)
ex) 0/0
inf, -inf : 무한대(infinite)
ex) 1/0
-자료형 확인(내장함수)
# 함수: (중등과정) y = f(x), 입력 x에 대응하는 출력 y가 존재할때 함수라고한다.
# 프로그래밍 함수의 개념
# (정의) 사전에 특정 작업을 수행하는 코드를 미리 구현해둔 모듈(기능)
# (동작) x를 입력받아 기능을 수행하고 y를 리턴한다.
# ex) 출력값 = print(입력값)
(무슨 자료형인지 체크) typeof, mode, class
종류 차이점 출력결과
======================================================================
typeof 내부저장방식 integer/double, character, logical
mode 전통적분류 numeric, character, logical
class 객체의 자료형(종류) numeric, character, logical + 객체의 자료형
(skip) 예시 typeof(matrix(1:4, 2, 2))
typeof(data.frame(x=1:3))
(특정 자료형인지 체크) is.numeric(), is.character(), is.logical(), is.integer(), is.double()
결과값이 TRUE, FALSE로 나온다
-자료형 변환: as.numeric(), as.logical(), as.character()
(실습) day02.R 스크립트 파일 생성
# 자료형 실습
# 실행 단축키: ctrl + 엔터
# 1.기본 자료형
# 문자
print("hello")
# 오류
print(hello)
# 오류
#print("abc)
# 수치
print(3.14)
print(5)
print(10L)
# 논리
print(TRUE)
print(FALSE)
print(true)
# 2.변수 생성 및 초기화
name = 'juk' # 오른쪽의 값이 왼쪽의 변수에 저장된다(초기화된다)
print(name)
val = 3.14
print(val)
is_error = FALSE
print(is_error)
# cat 함수(기능): 인자값 여러개를 받아서 모두 출력해준다.
cat("name:", name)
cat("name:", name, ", val:", val)
#값 복사(call by value/call by reference->함수 시간에)
#swap(값 교환) 예제
num1 <- 1
num2 <- 2
# todo. num1=num2, num2=num1, 그런데 num1에 값을 교체하는순간 num1의 값은 잃어버림
tmp <- num1 # num1의 값이 tmp에 복사됨
num1 <- num2
num2 <- tmp
cat(num1, num2, tmp)
# 3.자료형 확인(내장 함수)
# (무슨 자료형인지 체크) typeof, mode, class
typeof(name)
typeof(val)
typeof(is_error)
mode(name)
mode(val)
mode(is_error)
class(name)
class(val)
class(is_error)
# (특정 자료형인지 체크) is.numeric(), is.character(), is.logical(), is.integer(), is.double()
is.numeric(age)
is.numeric(name)
is.character(name)
is_true = is.logical(is_error)
print(is_true)
# 4.자료형 변환(명시적 형변환)
as.numeric('1')
as.numeric('abc')
as.numeric(TRUE)
as.numeric(FALSE)
val = as.character(100)
print(val)
as.character(TRUE)
as.logical(1.5)
as.logical(0)
as.logical('a')
as.logical('true')
'프로그래밍 > R' 카테고리의 다른 글
| R언어, 제어문 (0) | 2025.09.20 |
|---|---|
| R 매트릭스 (matrix, 행렬) (0) | 2025.09.14 |
| R언어 벡터 (0) | 2025.09.09 |
| R 연산자 (1) | 2025.09.08 |
| R 프로그래밍 개론 (0) | 2025.09.06 |