Angular 개발환경

Angular4 CLI

2017년 3월에 기존 2.x 버전에 호환하는 Angular 4.0.0이 출시되었다. [^1]


### CLI Quick Start

Angular CLI는 명령행 인터페이스로 프로젝트를 생성, 파일 추가 그리고 개발 태스크 - 테스트, 번들, 개발에 대한 기능을 제공하고 있다.
여기서 Angular CLI로 TypeScript 에서 앱을 개발하는 과정을 Style Guide가 권장하는데 맞게 진행해 보자

예제 다운로드

자세히 보기

Angular 개발환경

Angular

모바일, 데스크탑 웹 앱 구축을 지원하는 UI Framework 이다.

Version History

  • Angular 2: Initial Release 14.09.2016
  • Angular 4: Release on 23.03.2017
    • 2017년 3월에 기존 2.x 버전에 호환하는 Angular 4.0.0이 출시되었다. [^1]
  • Angular 5: Currently in beta 4 release 16.08.2017

Angular Changelog 에서 최신 정보를 얻을 수 있다.

자세히 보기

NodeJS: 콤포넌트 만들기

모듈 방식의 express 콤포넌트 만들기

코드 기반 모듈화 하기

Modular nodejs express 를 정리했다.

모듈식 구조는 콤포넌트 사이를 완전히 분리되지 않는 것으로 이해할 수 있다. 모듈화 구조는:

    1. 작은 콤포넌트로 나뉜다
    1. 콤포넌트 자체의 의존성 (테스트)를 갖고 타 콤포넌트에 영향을 최소화해 갱신할 수 있다.
    1. 프로젝트 전반 의존성은 개별 콤포넌트낄 공유 (혹은 덮어씀)할 수 있다
    1. 콤퍼넌트 우선-클래스(first-class)를 만들어야 한다. 즉 상대적인 경로롤 require를 구문을 사용 않는다.
    1. 다시 구성할 필요 없이앱 확장 (혹은 축소)에 전념한다

최소 모듈식 구조

아래 같은 최소 구조를 기반으로 하자:

1
2
3
4
bin/
lib/
package.json
index.js
  • bin: npm 스크립에 내장하지 않는 모든것 (ex. hooks, ci 등등 )
  • lib: 앱 콤포넌트

콤포넌트를 추가

콤포넌트는 단독으로 사용할 수 있는 프로젝트의 모든 측면이다. 예를 들어, 한 구성 요소는 cron 작업 스케줄링, 전자 메일 보내기, 내보내기 도구에 다른 구성 작업을 할 수 있다. 데이터 측면에서 모든 모델에 전용 인 하나의 구성 요소 또는 각 모델에 대해 별도의 구성 요소를 가질 수 있다

lib 디렉토리에 콤포넌트를 추가한다:

1
2
3
4
5
6
7
8
9
10
bin/
lib/
|- app/
| |- index.js
| └─ package.json
|- logger/
|- config/
└─ models/
package.json
index.js

콤포넌트의 진입점은 index.js 이고 package.json에 관련 의존성을 담는다.

package.json은 npm init -y 으로 초기화한다.

먼저 express 모듈을 설치한다. ( 여기선 npm version 5 이상 사용)

1
npm i express

logger 디렉토리에 로깅 모듈을 설치하고, config 디렉토리에 콤포넌트를 위한 구성 파일을 둔다.

콤포넌트 우선 클래스 만들기

콤포넌트는 앱에서 우선 클래스 이라서 프로젝트 어느 곳에서든 바로 접근할 수 있어야 해서, 아래 같이 상대적 경로를 사용하지 말아야 한다.

1
var logger = require('../../../logger')

콤포넌트에서 모든 모듈은 /lib 폴더를 참조하게 하므로 아래 같이 트릭을 사용해 node_modules 밑에 _ 로 링크를 만들어 주면
In UNIX, this is:

1
2
cd {project_root}/node_modules
ln -s ../lib _

In Windows, it is:

1
2
cd {project_root}/node_modules
mklink /D _ ..\lib

require('_/looger) 같이 참조할 수 있다.

1
var log = require('_/logger')

의존성 공유

이제 프로젝트 루트에서 콤포넌트를 설치하면 의존성을 사용할 수 있다.

설정

콤포넌트의 분리는 휼륭하다

preinstall

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var fs = require("fs");
var resolve = require("path").resolve;
var join = require("path").join;
var cp = require("child_process");

// get library path
var lib = resolve(__dirname, "../lib/");

fs.readdirSync(lib).forEach(function (mod) {
var modPath = join(lib, mod);

// ensure path has package.json
if (!fs.existsSync(join(modPath, "package.json"))) return;

// install folder
cp.spawn("npm", ["i"], { env: process.env, cwd: modPath, stdio: "inherit" });
});

참조

Nodejs middleware: Express

Express

Express는 NodeJS Webapplication framework이다.

Install express

Express는 크게 express 모듈과 CLI 모듈로 구성되어 있다.

  • express-generator: Express 프로젝트 및 템플릿 생성
  • exporess module: Node.js module

expres 명령을 이용해서 프로젝트를 생성하는 모듈로서 글로벌로 설치합니다.

1
2
$ mkdir myapp
$ cd myapp

npm의 package.json 를 초기화하자.

1
$ npm init

entry point: 에 app.js 혹은 index.js 시작점을 선언한다.

그리고 현재 프로젝트에 express 모듈을 설치하고 package.json에 의존성을 추가해 준다.

npm 5.0+ 이상은 npm install 시 모듈을 의존성 목록에 자동으로 추가한다.

1
$ npm install express

이전 버전은 아래같인 --save 를 명시해야 한다.

1
$ npm install express --save

Express Generator

express-generator 모듈은 손쉽게 프로젝트를 구성할 수 있게 해준다. CLI 명령으로 글로벌로 설치해 준다.

1
$ npm i -g express-generator

pug 뷰 엔진을 가진 myapp 이란 프로젝트를 생성하려면

1
$ express --view=pug myapp

프로젝트로 이동해 모듈을 설치하고 시작한다.

1
$ cd myapp && npm install

MacOS or Linux 에서 디버그 모드로 시작한다.

1
$ DEBUG=myapp:* npm start

Windows 에서

1
> set DEBUG=myapp:* & npm start

debug module

https://developer.ibm.com/node/2016/10/12/the-node-js-debug-module-advanced-usage/

https://expressjs.com/en/guide/writing-middleware.html

ExpressJS Middlewares

  • morgan:
    logger

  • body-parser:
    parse the body so you can access parameters in requests in req.body. e.g. req.body.name.

  • cookie-parser:
    parse the cookies so you can access parameters in cookies req.cookies. e.g. req.cookies.name.

  • serve-favicon:
    exactly that, serve favicon from route /favicon.ico. Should be call on the top before any other routing/middleware takes place to avoids unnecessary parsing.

주요 미들웨어

The following middlewares are not added by default, but it’s nice to know they exist at least:

  • compression:
    compress all request. e.g. app.use(compression())

  • session:
    create sessions. e.g. app.use(session({secret: 'Secr3t'}))

  • method-override:
    app.use(methodOverride('_method')) Override methods to the one specified on the _method param. e.g. GET /resource/1?_method=DELETE will become DELETE /resource/1.

  • response-time: app.use(responseTime()) adds X-Response-Time header to responses.

  • errorhandler:
    Aid development, by sending full error stack traces to the client when an error occurs. app.use(errorhandler()). It is good practice to surround it with an if statement to check process.env.NODE_ENV === ‘development’.

  • vhost:
    Allows you to use different stack of middlewares depending on the request hostname. e.g. app.use(vhost(‘.user.local’, userapp)) and app.use(vhost(‘assets-.example.com’, staticapp)) where userapp and staticapp are different express instances with different middlewares.

  • csurf:
    Adds a Cross-site request forgery (CSRF) protection by adding a token to responds either via session or cookie-parser middleware. app.use(csrf());

  • timeout:
    halt execution if it takes more that a given time. e.g. app.use(timeout(‘5s’));. However you need to check by yourself under every request with a middleware that checks if (!req.timedout) next();.

R Programming tutorial

R 프로그래밍

R 프로그래밍 언어(줄여서 R)는 통계 계산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경이다.

뉴질랜드 오클랜드 대학의 로스 이하카와 로버트 젠틀맨에 의해 시작되어 현재는 R 코어 팀이 개발하고 있다. R은 GPL 하에 배포되는 S 프로그래밍 언어의 구현으로 GNU S라고도 한다. R은 통계 소프트웨어 개발과 자료 분석에 널리 사용되고 있으며, 패키지 개발이 용이하여 통계학자들 사이에서 통계 소프트웨어 개발에 많이 쓰이고 있다.

R의 문법과 통계처리 부분은 AT&T 벨 연구소가 개발했던 S를 참고했고, 데이터 처리부분은 스킴에 영향을 받았다. - 위키피디아

R 소개

  • 개발자도 배우기 쉽지 않은 언어
    • 함수형, 절차형 언어의 혼합
  • 통계용어 난무
    • 통계학자도 배우기 쉽지 않은 언어 – 프로그래밍의 어려움
  • 자유로운 분석 추구 쉽다.

Object

R에서 Data는 객체(Object)로 표현하고 저장한다. 객체는 인덱스를 가진 구조를 가진 벡터이다.

객체 선언

일반 변수 선언 같이 객체는 대입연산자(“=”, “<-“, “<<-)을 통해 숫자, 문자, 논리형 및 4가지 상수 자료형 값을 넣을 수도 있다.

  • 객체 이름은 알파벳, 숫자, “.”, “_“ 으로 시작한다
  • 큰 따옴표로 둘러싸여지지 않은 이름은 객체로 사용한다
  • R은 대문자와 소문자를 구분합니다. 즉, abc, ABC, abC는 모두 다른 객체로 취급.
  • 숫자로 시작할 수 없다.
  • 예약어를 객체 이름으로 사용할 수 없다.
    • break else FALSE for function if in Inf
    • NA NaN next NULL repeat TRUE while
  • 세미콜론 ; 으로 구문을 구분해 사용할 수 있다.

기본 자료형

자료 저장을 위해 R 에서 사용하는 기본 자료형은 하나의 객체이며 그 종류는 다음과 같습니다. (괄호 안의 영문은 R 내부에서 사용하면 자료 객체의 이름입니다.)

  • 숫자형
    • 정수 (integer)
    • 실수 (numeric)
    • 복소수 (complex)
  • 문자형 (character)
    • 큰따옴표로 둘러 쌓아 표현 : “abc”, “123” 등
  • 논리형 (logical)
    • TRUE(T), FALSE(F)
  • 특수한 상태를 나타내는 상수
    • NULL: 정의되지 않은 값
    • NA : Missing Value
    • -Inf, Inf : 음과 양의 무한대
    • NaN : 수의 연산에서 불능의 경우 표현 0/0, Inf/Inf 등

객체 대입과 접근

R에서 객체로 데이터 형식 없이 대입 연산자 =, <-, <<- 를 이용한다.

할당연산자 의미
= 일반적인 오른쪽 값을 왼쪽 변수에 할당
<- 우변의 결과를 좌변의 객체에
-> 좌변의 결과를 우변의 객체
<<-

변수는 내부적으로 벡터로 저장되어 인덱스로 접근할 수 있다. 벡터 인덱스는 1부터 시작한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> x <- 10          #변수 x에 스칼라 값 10을 대입
> x = 10
> x
[1] 10
> x[0] #변수의 요소 접근
numeric(0)

> 'hello' -> h
> x <- 2; y <- 3; #세미콜론
> k <- 2 + 6i #리터럴
> j <- 2 - 3i #리터럴
> k
[1] 2+6i
> k+j
[1] 4+3i

객체에 잘못된 대입의 결과

1
2
3
4
> 1a <- 1             # 변수 1a에 1을 할당. 오류
Error: unexpected symbol in "1a"
> if <- 1 # 변수 if에 1을 할당. 오류
Error: unexpected assignment in "if <-"

이렇게 할당한 객체를 확인하려면

1
2
3
4
5
> ls()                      # 현재 객체 목록
> objects() # 현재 객체 목록
[1] "h" "j" "k" "x" "y"
> mode(h) # 데이터 형식 확인
[1] "character"

객체를 메모리에서 지우려면 rm() 함수를 사용한다.

1
> rm(객체명, 객체명, ...)

삭제 명령

1
2
> rm(x)               # 객체의 삭제
> rm(list=ls()) # 모든 객체 삭제

Scala

스칼라 값은 하나의 단순한 숫자, 문자열 같은 값으로 R에서 변수, 객체의 요소 값을 말한다.

아래 같은 종류의 값을 스칼라 값이라 한다.

  • NA: “데이터 없음” 으로 is.na(x)로 확인 가능
  • NULL: 변수가 초기화 되지 않음을 의미
  • 문자열: ‘’, “”로 묶인 문자열
  • 진리값: TRUE, FALSE로 참, 거짓 표현

상수는

숫자에 의미를 두어 숫자 1,2,3.. 과 문자열인 “pi”, “constant”… 등을 상수로 정의해서 사용한다.
즉 표기 자체의 의미가 변하지 않는 것을 상수라고 하고 숫자와 큰 따옴표로 둘러쌓여진 문자들은 상수로 사용된다.

문자열 함수

1
2
3
4
5
> s <- paste("하나", "1", "둘", "2")      # 문자열 결합
[1] "하나 1 둘 2"
> sp <- strsplit("안 녕 하 세 요", " ") # 문자열 분리
[1] "안" "녕" "하" "세" "요"
> cat("문자열 출력", "\n") # 문자열 결합후 출력

Arithmetic operators

R에서 사용하는 연산자는 +(덧셈), -(뺄셈), *(곱셈), /(나눗셈), %/%(정수나눗셈), %%(나머지), ^(제곱) 등이 있습니다. 우선순위는 표준적인 연산의 우선순위를 따르고, 괄호 안쪽의 수식, 지수 및 근호, 곱하기와 나누기, 더하기와 빼기 순이다.

연산자 의미
+,-,*,/ 사칙연산 x+y, y/y, x-y, x*y
x^y, x**y 거듭제곱 x^2, x**2
x %/% y 정수 나눗셈
x %% y 나머지
1
> 산술연산자 관련 `help(Arithmetic)`

산술연산자 연습:

1
2
3
4
5
6
7
8
9
10
11
12
13
> 10 * 20
[1] 200
> 6 / 2
[1] 3
> 6 %/% 2
[1] 3
> 6 %% 2
[1] 0
> 8**2
[1] 64
> 8^2
[1] 64
>

연산자 우선순위

연산자는 괄호 안쪽의 수식, 지수 및 근호, 곱하기와 나누기, 더하기와 빼기 순입니다.

1
2
3
4
5
6
7
8
> 3/(2-1)                      # 괄호안의 숫자는 항상 우선순위가 높음
[1] 3
-3^2 # 거듭제곱이 먼저 계산
[1] -9
> sqrt(3+1)*2 # 루트의 계산은 sqrt()함수를 사용하며 우선순위가 높음
[1] 4
> 12 + 34 - 56 * 78 / 90 # 곱하기, 나누기의 우선순위는 더하기 빼기보다 높음
[1] -2.533333

논리 연산자

| 연산자 | 의미 | 예 |
| —————- | —————– | ——————– | — | —- |
| TRUE, FALSE | 참 | |
| &&, || | AND 조건, OR 조건 | true && true, x | | y |
| &, | | AND 연산, OR 연산 | x & y |
| !x | 부정 | !true |
| isTRUE(x) | x의 TRUE 판단 | isTRUE(FALSE) |
| xor( ) | | |

논리연산자 실습:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> TRUE || FALSE
[1] TRUE
> TRUE || TRUE
[1] TRUE
> TRUE && FALSE
[1] FALSE
> TRUE && TRUE
[1] TRUE
> TRUE & TRUE
[1] TRUE
> 1 > 5
[1] FALSE
> 10 <= 10
[1] TRUE
> 10 != 1
[1] TRUE
> x <- F
> isTRUE(x)
[1] FALSE

비교 연산자

연산자 의미
<**, **> 작고, 큰 x < y, x > y
>=, <= 크거나/작거나
== 같은

컬렉션 함수를 이용해 데이터세트를 생성한다.

1
2
3
4
5
6
7
8
> 1 > 2
> 6 == 6
> ( 105 ) | ( 4 + 2)
>

> x <- c(1,2,4) # 컬렉션 데이터
> x < 3 # 각 요소의 비교
> x[x<3] <- 0 # TRUE 조건에 0

조건식

컬렉션 함수를 이용해 데이터세트를 생성한다.

1
2
3
4
5
6
> x <- c(1,2,4)                # 컬렉션 데이터
> for(i in 1 : NROW(x)) {
+ if (x[i] < 3) {
+ x[i] <- 0
+ }
+ }

연산자 실습

현재가치와 미래가치를 파악하는 예를 들어 연산자를 사용해 보자.

미래가치를 FV(future value), 현재가치를 PV(present value), 이자율을 r, 기간을 n 이라고 하면 아래 식으로 계산 할 수 있다.

1
2
\\[FV = PV * (1 + r)^{n}\\]
\\[PV = \frac{FV}{(1+ r)^{n}}\\]

‘지금 1억원을 받을래? 1년 뒤에 1억 천만원을 받을래?’ 이제 선택이 쉽지 않습니다. 선택을 위해서는 1년간의 이자율을 알아야 합니다. 1년간의 이자율이 5%라고 가정해보겠습니다. 지금 1억원을 받아 1년간 예금하면 1억 5백만원이 됩니다. 1년 뒤에 1억 천만원을 받는 것이 유리합니다. 만약 이자율이 15%라면 어떨까요? 지금 1억원을 받아 예금해 두면 1년뒤에 1억 1,500만원이 될 것이기 때문에 지금 1억원을 받는 것이 합리적입니다.

  • 이자율이 3%일 때, 1억원을 10년간 예치 한 후 금액은?
  • 10년 후 1억원을 받기 위해서 현재 투자해야 할 금액은?
1
2
3
4
5
6
7
8
9
10
> r <- 0.03              # 이자율 변수 r에 0.03을 할당
> n <- 10 # 기간 변수 n에 10을 할당
> PV <- 100000000 # 현재가치 변수 PV에 1억원을 할당
> FV <- PV * (1+r)^n # 미래가치 FV를 계산
> FV
[1] [1] 134391638 # 이자율 3%로 10년간 1억원 예치시 1억3천만원 수령
> FV <- 100000000 # 미래가치 FV에 1억원을 할당
> PV <- FV/(1+r)^n # 현재가치 PV를 계산
> PV
[1] 38554329

Package 관리

외부에서 제공하는 모듈을 Install, Update, Library 명령으로 관리할 수 있다. 패키지 설치는 Install 그리고 사용할 때는 Library 명령을 사용하고 패키지 갱신에 Update 명령을 사용한다.

패키지 관리

패키지 설치과 업데이트

1
2
3
4
> install.packages("패키지명")      # 패키지 설치
> library("패키지명") # 패키지 불러들이기 (사용)
> require("패키지명") #
> update.packges('패키지명') # 패키지 갱신

설치된 패키지 목록 보기

1
2
3
> Library()
> installed.packages()
> Install.packages()[, c("Packages", "version", "License")]

필수 패키지

  • Install.packages(“rgl”) # 3D 그래프 보여주는 패키지
  • Install.packages(“ggplot2”)
  • Install.packages(“ggthemes”)
  • Install.packages(“data.table”)
  • Install.packages(“devtools”)
  • Install.packages(“KoNLP”)
  • Install.packages(“dplyr”)
  • Install.packages(“plyr”)
  • Install.packages(“reshape2”)
  • Install.packages(“scales”)
  • Install.packages(“stringr”)

Github로 패키지 설치하기

개발자가 베타 버전을 github에 공개하는 경우 Knitr 패키지는 R에서 html, pdf, MS-Word 문서를 만들 수 있음고 https://github.com/yihui/knitr 에서 배포한다.

1
2
3
4
> Install.packages("devtools")
Library("devtools")

> install_github("yihui/knitr")

R 관련 검색

R에서 외부 데이터 읽어들이기

외부에서 정리한 데이터를 R로 가져오면 dataframe 객체(테이블)에 저장된다.

Csv 포맷 문서 읽어들이기

_Read.csv()_ 함수를 사용한다.

1
2
> List <- read.csv("example_studentlist.csv")
> List : ………………………………….

Csv 파일에 column header가 없을 경우,

1
> List <- read.csv("example_studentlist.csv", header=F)

Txt 포맷 데이터 읽기

Read.table() 함수를 사용한다.

1
2
List <- read.table("studentlist.txt")
List : ……………………

파일에 column header가 있을 경우, header=T 인수 필요

1
List <- read.table("studentlist.txt", header=TRUE)

데이터 파일의 데이터 구분자가 예를 들어 세미콜론 ; 인 경우, Read.table() 함수에 sep 인수 추가

1
List <- read.table("studentlist2.txt", header=TRUE, sep=";")

Excel 파일 읽어들이기 위해서 Readxl 패키지 필요

1
2
3
4
Install.packages("readxl")
Library("readxl")
Df <- read_excel(path="studentlist2.xlsx", sheet="Sheet1", col_names = TRUE)
Df: ……………………..

XML 포맷 읽어들이기

1
2
Install.packages("XML")
Library("XML")

Xml 파일 불러오기

DocFromXML <- xmlTreeParse(“score.xml”, useInternal=T)

불필요한 태그 빼고 필요한 컨텐츠만 가져오는 경우, xmlRoot() 사용

1
2
> RootNode <- xmlRoot(DocFromXML)
RootNode : ……………………..

특정 노드값(name) 가져오기

1
2
> Names <- xpathSApply(RootNode, "//name", xmlValue)
Names: ……………

특정 노드값(score) 가져오기

1
> Names <- xpathSApply(RootNode, "//score", xmlValue)

두값(name, score)을 테이블로 만들려면, data.frame() 사용

1
2
> MathScore <- data.frame(NAME=Names, SCORE=Scores)
MathScore : …………………..

웹에 있는 HTML 형식의 테이블 읽어들이기

XML 패키지에 있는 readHTMLTable() 함수를 이용하여 웹에 있는 테이블을 읽어들일 수 있다.

1
2
> RawData <- readHTMLTable(http://cran.r-project.org/web/packages/available_package_by_name.html)
Class(RawData): …………….. list class 상태임.

간편하게 보려면 dataframe 형식으로 변경.

1
2
3
PackageList <- as.data.frame(RawData)
Names(PackageList) <- c(Package Name", "Description") 변수열 이름 조정
Head(PackageList, 5) : PackageList의 1~5 번째 까지의 관측치(Observation) 출력

Control+C, Control+V로 데이터 가져오기. 엑셀에서 데이터 영역 선택 후 Control+C

1
StudentList <- read.delim("clipboard"), read.delim은 header 자동 인식

R 시작하기

R 소개

R은 벨 연구소 Becker 등에 의해 개발됐던 S language를 기반으로 통계 계산, 시각화를 위한 프로그래밍 언어를 포함한 개발환경이다. S language를 이용한 Insightful사의 S+는 S 언어를 이용한 상업용 소프트웨어이고, R은 공개소프트웨어 기반의 소프트웨어 이다.

  • 예) Excel, SPSS, SAS, HLM, MPlus 등 통계 프로그램

소개

http://revolution-computing.typepad.com/.a/6a010534b1db25970b01676908ecaf970b-pi

설치

R 의 GUI 도구로 R Studio를 사용할 수 있다.

  1. http://r-project.org 의 CRAN mirror에서 R을 다운받아 설치한다.
  2. RStudio 설치

R 시작하기

R 은 console을 통해 프로그래밍을 하거나 외부 에디터에서 작성한 소스를 컴파일해서 실행 할 수 있다.

macOS에서 R 시작시 다음 같은 경고를 보이면 macOS FAQ를 참고해 설정을 해주어야 한다.

[그림. ]

prompt

R을 실행하면 명령 입력 프롬프트 ‘>’을 볼 수 있다. 프롬프트에서 한 줄에 하나 혹은 한문장의 명령이 입력되고 실행된다.

1
2
3
4
5
6
7
print(“Hello World”)
Factorial(10) # 계산 기능
Rep(x=”hello”, times=5)
Rep(times=5) : Error…
Plot(10,10)
Plot(c(5,7), c(20, 30))
Plot(runif(100), runif(100)) # runif()는 랜덤 넘버 생성 함수

에서 명령을 입력하고 엔터로 실행이 되지만 괄호((),{},[])가 닫히지 않으면 ‘+’ 프로프트에서 계속 입력할 수 있다.

help() 사용

R에서 도움말을 통해 함수, 형식, 등의 정보를 얻을 수 있다.

1
> help(“함수명”)

패키지를 로드하지 않은 함수의 도움말 보기

1
> help.search(“함수명”)

내가 얻은 패키지는 어떤 것인가?

1
> help(package=”알고싶은 패키지명”)

주요 도움말 명령 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
> help()                      # 도움말 창
> help(ls) # 함수 ls()에 대한 도움말
> ?ls # 도움말 단축키 ?로 help(ls) 호출
> help(">") # R의 예약어, 연산자 등은 ""로
> help("for") # 묶는다.
> #특정 패키지에 대한 도움말 요청
> help(package="datasets")
> # 일반 검색어를 이용해 도움말 검색
> help.search("Latex")
> ??"Latex"
>
> # 사용 예제 검색
> example(mean)
mean> x <- c(0:10, 50)

mean> xm <- mean(x)

mean> c(xm, mean(x, trim = 0.10))
[1] 8.75 5.50
>

object

다음 같이 hello 변수와 값을 대입하고 hello 변수를 살펴본다.

1
2
3
4
5
6
7
8
9
10
11
12
> hello <- “안녕하세요"            #유니코드 문자열
> hello
[1] “안녕하세요"
> hello2 <- “R"
[] “R"
> Object1 <- 1 # 숫자
> Obect2 <- 2
> Object1 + Object2
[] 3

> Object1 <- TRUE # 논리형
> Object2 <- FALSE

Workspace

R에서 작업공간(workspace)에 사용자가 R을 이용하여 수행하는 자료와 분석 프로시져 등을 포함하게 된다.

  • setwd( … ): 명령으로 워크스페이스 변경
  • getwd(): 현재 워크스페이스 경로
  • list.files(PATH): 경로의 파일 목록을 반환

R의 종료를 위해서는 명령문 프롬프트에서 **q()**를 실행하던가 메뉴로부터 “종료”를 선택한다.
종료시 워크스페이스에 작업된 자료를 저장할 수 있다.

R 객체 이용하기

R의 최소 단위는 벡터

정수(1), 실수(5.8271), 문자(‘A’) 문자열(“hello”)는 스칼라이다.
벡터는 {1,2,3,4,5,6}과 같이 스칼라가 여러 개 모인 것이이다.

한 개의 스칼라 값을 가진 벡터를 선언한다.

1
> a <- 5

객체에 다른 객체 넣기

1
2
3
4
5
6
7
> object1 <- 1
> object2 <- 2
> object1
[1] 1
> object1 <- object2
> object1
[1] 2

객체에 다른 객체 넣기

1
2
3
4
5
6
> object1 <- 1
> object1 <- 2
> object1 <- object2
> object2 <- 100
> object1
[1] 2

함수 계산 결과를 객체에 넣기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> Excel1 <- read.csv(“example_student.csv”)

> Object1 <- sum(1,8,4,5,9)
Object1 : 27

> A <- c(1,3,5,6,9) # 벡터에 대해
A : 1,3,5,6,9

> A <- 1
Is.vector(a): True

A <- c(1,2,5)
Is.vector(a): True

> A <- c(“첫번째”, “두번째”, “세번째”)
A : ???

Package 관리

외부에서 제공하는 모듈을 Install, Update, Library 명령으로 관리할 수 있다. 패키지 설치는 Install 그리고 사용할 때는 Library 명령을 사용하고 패키지 갱신에 Update 명령을 사용한다.

패키지 관리

패키지 설치과 업데이트

1
2
3
4
> install.packages("패키지명")      # 패키지 설치
> library("패키지명") # 패키지 불러들이기 (사용)
> require("패키지명") #
> update.packges('패키지명') # 패키지 갱신

설치된 패키지 목록 보기

1
2
3
> Library()
> installed.packages()
> Install.packages()[, c(“Packages”, “version”, “License”)]

필수 패키지

1
2
3
4
5
6
7
8
9
10
11
Install.packages(“rgl”) # 3D 그래프 보여주는 패키지
Install.packages(“ggplot2”)
Install.packages(“ggthemes”)
Install.packages(“data.table”)
Install.packages(“devtools”)
Install.packages(“KoNLP”)
Install.packages(“dplyr”)
Install.packages(“plyr”)
Install.packages(“reshape2”)
Install.packages(“scales”)
Install.packages(“stringr”)

Github로 패키지 설치하기

개발자가 베타 버전을 github에 공개하는 경우
Knitr 패키지는 R에서 html, pdf, MS-Word 문서를 만들 수 있음고 https://github.com/yihui/knitr 에서 배포한다.

1
2
3
4
> Install.packages(“devtools”)
Library(“devtools”)

> install_github(“yihui/knitr”)

RStudio UTF8 지원


참조

mongodb - Collection

Collection

mongoDB는
mongoDB는 Collection 이 데이터베이스 테이블과 같은 개념이다. 아래 테이블은 관계형 데이터베이스 MySQL과 MongoDB의 개념을 비교해 주고 있다. [^1]

MySQL MongoDB
Table Collection
Row Document
Column Field
Joins Embedded documents, linking
자세히 보기