[관악구 설인컴퓨터] /R/프로그램 소스/제목:기초 소스 1-1
안녕하세요 오늘은 좀 악명이 높은 R프로그램밍 언어 기초 소스 1-1 을 동작시켜보겠습니다.
R 프로그램 언어는 1993년 오클랜드 대학교에서 개발된 통계 및 그래프 작업을 위한 인터프리터 프로그래밍 언어입니다.
생소한 프로그램언어인만큼 간략하게 장단점을 알아보고 소스도 공유하겠습니다.
장점
GPL로 오픈 소스로 배포되고 있어 무료로 사용할 수 있다. SPSS, MATLAB과 같은 상용 프로그램을 구입하지 않아도 된다.
R에서 사용할 수 있는 수많은 통계 관련 패키지[2]가 개발되어 있어서 인터넷을 통해 이 패키지들을 설치하는 식으로 무수한 기능 확장이 가능하다.
애초에 통계학자들이 만들어 낸 언어이며 통계 전문 언어 중 가장 보편적이기 때문에 내가 사용하고 싶은 모든 통계 기법이 이미 어딘가에 패키지 형태로 구현되어 있다고 봐도 된다. 여기서 찾아볼 수 있다.
그래픽 관련 패키지를 설치하면 간단하게 다양한 그래프를 활용할 수 있으며 구글이나 네이버 지도를 불러오거나 이를 활용해 GIS 용도로 쓰는 것도 가능하다.
웹 어플리케이션 개발 프레임워크인 Shiny의 고도화로 통계 또는 머신러닝 모델을 웹과 연동할 수 있다.
데이터 마이닝, 빅 데이터 프로세싱, 기계학습 등에 유용하다.
리스크, 재무, 마케팅 담당자 채용 시 R 능통자를 우대하기도 한다.
밑의 단점 단락에 멀티코어 프로세싱을 지원하지 않는다고 쓰여 있지만, Microsoft R Open을 사용하면 인텔 MKL 라이브러리를 이용해 멀티코어 프로세싱을 사용할 수 있고 또한 작업을 자동으로 서로 다른 코어에 할당하기 때문에 따로 코드를 작성할 필요도 없다! 하지만 R 유저들은 CRAN 대신 MRAN을 사용하는 것을 꺼리는 듯.
단점
난이도 어렵다. 물론 이것은 컴퓨터 공학자가 아니라 일반인 입장에서 어렵다는 것이다. 영어로 검색해봐도 난이도를 알 수 있다. 이 악명이 나온 이유가 있다. R자체가 원래 통계 프로그램인 S를 그대로 배껴서 만든 프로그램이다. 따라서, R은 원래 통계분석 프로그램이였다.
문제는 통계학자들도 R언어를 배워야하는데, 프로그래밍이 가능하게 만들면서 다양하게 만들고 분석할 수 있는 가능성을 갖음과 동시에, 프로그래밍을 알아야 한다는 단점이 생겼다. 통계분석 프로그램으로 유명한 SAS, STATA, Minitab에 비하면 월등히 어려워서 한 동안은 대학에서도 취급하지 않았고, 일부 논문에서는 받아주지도 않았다. 근래에 코딩이 중요해지면서, R의 인기가 올라갔다. 인기가 올라간 이유 중 가장 큰 이유는 '공짜'라는 것이다. 통계 분석하는 함수들이 기본적으로 들어가있으면서, 프로그래밍이 가능하기에 현재 많은 통계분석 프로그램 중에 유일하게 SAS의 명성을 따라잡을 수 있는 언어가 되었다. 이에 따라, SAS또한 자사 프로그램으로 대학에는 공짜로 풀기 시작했다. SAS가 코딩은 훨씬 쉽다
메모리 큰 데이터 집합을 이용할 때 문제가 발생할 수 있다. 데이터를 물리적 메모리에 저장해야 하기 때문이다. 데이터 뿐만 아니라, 분석할 때 사용하는 모든 '패키지'를 메모리에 저장하면서 사용하기 때문에 큰 메모리가 필요하다. 예로 들면, 몇 기가바이트 급의 데이터를 분석한다면, 패키지에 데이터를 램에 저장한다고 생각하면, 기본 맥북처럼 4GB 램인 컴퓨터는 분석도 제대로 못한다. 때문에 효율이 중시되는 프로젝트에서는 먼저 R로 구현한 후 그걸 C 등의 일반 프로그래밍 언어로 포팅하는 경우가 많다. 다른 경우는 복잡한 데이터 작업은 C 또는 Fortran(포트란)에서 작업시키고 결과만 가져오는 방식을 사용하기도 한다. 다만, 컴퓨터에 장착되는 메모리 용량이 증가함에 따라 이 문제는 점점 개선되고 있다.
정보보호 기능 없음 과거에는 R을 백엔드 서버로 사용하여 계산을 수행하는 것도 불가능했으나, 아마존 웹 서비스 클라우드 플랫폼에서 가상 컨테이너를 사용하는 등의 기술이 개발되면서 보안 문제는 개선됐다.
프로그램 자체의 한국어 기능을 제공하지 않는다
소스
print("Hello, World!")
n <- scan("stdin", what=integer(0), n=1)
for (i in 0:n) {
r <- exp(log(2)*i)
print(r);
}
결과값은
[1] "Hello, World!"
가 뜨고 30을 입력하면
[1] 1
[1] 2
[1] 4
[1] 8
[1] 16
[1] 32
[1] 64
[1] 128
[1] 256
[1] 512
[1] 1024
[1] 2048
[1] 4096
[1] 8192
[1] 16384
[1] 32768
[1] 65536
[1] 131072
[1] 262144
[1] 524288
[1] 1048576
[1] 2097152
[1] 4194304
[1] 8388608
[1] 16777216
[1] 33554432
[1] 67108864
[1] 134217728
[1] 268435456
[1] 536870912
[1] 1073741824
이렇게 31줄로 2의 배수로 내려가는 값이 나옵니다.
20을 입력하면 21줄이 출력되고
10을 이력 하면 11줄이 출력 됩니다.
다음 이 소스는 아래의 스펙과 설정으로 구동이 되었습니다.
구동 디바이스:아이패드 운영체제:IPAD OS 13.2 S/W 정보:Programming Language (R) S/W 언어:R |