통계・데이터과학/R 컴퓨팅
R 특징, 설치법, 명령문 활용, 벡터 생성 및 연산
mindata1
2025. 3. 1. 23:16
R 특징
- GPL(General Public License) 개념으로 오픈 소스이며 무료
- 1만 개 이상의 공개 패키지 활용 가능
- 여러 커뮤니티 통해 다른 사용자들과 소통 가능
- Window, MacOS, Unix 등 여러 운영체제에서 구동이 가능하고 프로그램 용량이 작아 쉽게 설치 가능
- 추가적인 기능은 CRAN 을 통해 관련 패키지를 설치하면 사용 가능
- 다양한 분야의 통계분석 가능. 특히 우수한 도움말과 뛰어난 그래픽 기능 제공
- 행렬 개념의 데이터 관리를 통해 대용량 데이터 관리 및 처리에 유리하여 기계학습, 금융, 생명정보 공학 등 빅데이터 분석에 널리 활용
- C, C++, Fortran 등 기존 프로그래밍 언어와 달리 대화식으로 프로그램을 수행
- 특히 기존 프로그래밍 언어에 비해 상대적으로 배우기 쉬워 프로그래밍 입문용으로 좋음
- 다른 프로그래밍 언어로 개발된 함수와도 통합 가능. 프로그램의 속도를 높이기 위해 C 언어 등으로 기본 함수를 만들고 이를 R환경 안에서 구동시킬 수 있음
R 설치법
R의 설치를 위해 CRAN 사이트에서 최신 버전을 내려받을 수 있다.
- CRAN(Comprehensive R Archive Network) : 공개적 개발 환경인 R 네트워크
The Comprehensive R Archive Network
cran.yu.ac.kr
참고로 나는 맥을 사용하여, R-4.4.3-arm64.pkg 를 설치하였다.
R 명령문 입력
사칙연산
기본적인 사칙연산을 해보았다. 입력 후 엔터를 입력하면 곧바로 결과값이 출력된다.
변수 생성하고 값을 할당
- 세미콜론(;) 을 활용하면 여러 개의 명령문을 한 줄에 입력할 수 있다.
- 키보드 위쪽 화살표를 누르면 이전 입력창이 차례로 나타나고 오류 수정 가능하다.
> a <- 1
> b <- 2
> a + b
[1] 3
> a = 1; b = 2; a+b
[1] 3
- 변수에 문자값을 할당할 경우, 속성은 "character" 이다.
> a <- "use R!"
> a
[1] "use R!"
> mode(a) # 변수 a의 속성을 확인해주는 내장함수
[1] "character"
- 논리값도 변수에 할당 가능하며, 속성은 "logical" 이다.
> c <- 1 > 2
> c
[1] FALSE
> mode(c)
[1] "logical"
벡터 생성
- 벡터는 R활용 시 핵심적인 역할을 함
- 벡터는 c( ) 함수를 통해 생성 가능
- 숫자형 뿐만 아니라 문자형과 논리형 값도 다룰 수 있음
- 한 벡터 내 여러형태가 섞일 수는 없음
> x <- c(1,2,3)
> y <- c(4,5,6)
> x + y
[1] 5 7 9
> x^2
[1] 1 4 9
> x * y
[1] 4 10 18
> log(x^2)
[1] 0.000000 1.386294 2.197225
> z <- c(x,y) # 벡터 x, y를 병합하고 z에 저장
> z
[1] 1 2 3 4 5 6
벡터의 연산
- R의 내장함수를 이요해 벡터 x 에 대해 합, 평균, 분산 등 기초 통계량을 계산할 수 있다.
> x <- c(7,2,4,9,8,6,1,5,10,3)
> sort(x)
[1] 1 2 3 4 5 6 7 8 9 10
> sum(x)
[1] 55
> mean(x)
[1] 5.5
> sum(x)/length(x)
[1] 5.5
> var(x)
[1] 9.166667
> min(x)
[1] 1
> which.min(x)
[1] 7
> summary(x)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 3.25 5.50 5.50 7.75 10.00
- 통계함수 계산에서 NA 값을 포함시키지 않으려면, na.rm = TRUE 옵션을 사용하면 된다.
- is.na( ) : 한 벡터 내 결측값 있는 지 확인
- which(is.na( )) : 결측값 위치 확인
- sum(is.na( )) : 결측값 합계로 결측값이 총 몇개 존재하는 지 확인
> y <- c(1,3,5,NA,9,NA,11)
> mean(y)
[1] NA
> mean(y,na.rm=TRUE)
[1] 5.8
> is.na(y)
[1] FALSE FALSE FALSE TRUE FALSE TRUE FALSE
> which(is.na(y))
[1] 4 6
> sum(is.na(y))
[1] 2
> 1/0 #무한대
[1] Inf
> log(-1) #이상치
[1] NaN
Warning message:
In log(-1) : NaNs produced