Tools/R (66)

Tools/R

R - (6) 반복문

2017. 2. 17. 02:58
반응형

6. 반복문


(1) repeat


repeat는 계속해서 내부 코드를 반복한다. 반복문을 제어하는 내부 변수와 break 문을 통해 반복문을 탈출한다.


v <- c("Hello","loop")
cnt <- 2

repeat {
   print(v)
   cnt <- cnt+1
   
   if(cnt > 5) {
      break
   }
}


[1] "Hello" "loop" 
[1] "Hello" "loop" 
[1] "Hello" "loop" 
[1] "Hello" "loop" 


(2) while


while은 주어진 조건문이 true일때 계속 반복한다.


v <- c("Hello","while loop")
cnt <- 2

while (cnt < 7) {
   print(v)
   cnt = cnt + 1
}



(3) for 


for문은 vector나 list의 마지막 원소까지 반복한다.


v <- LETTERS[1:4]
for ( i in v) {
   print(i)
}



아래 튜토리얼을 참고한 포스팅입니다. 

https://www.tutorialspoint.com/r/r_operators.htm 


반응형

'Tools > R' 카테고리의 다른 글

R을 통한 2017년 대선 주자들 페이스북 분석  (5) 2017.02.21
R - (7) 함수  (0) 2017.02.19
R - (5) If, else if, switch  (0) 2017.02.15
R - (4) 연산자  (0) 2017.02.15
R - (3) 변수  (0) 2017.02.15
반응형

5. If, if else, switch



If 문


x <- 30L
if(is.integer(x)) {
   print("X is an Integer")
}


[1] "X is an Integer"



If else 문


x <- c("what","is","truth")

if("Truth" %in% x) {
   print("Truth is found")
} else {
   print("Truth is not found")
}


[1] "Truth is not found"



Switch 문


switch 문은 일반적인 C, Java등의 프로그래밍 언어와는 조금 다르다.


# by index
switch(1, "one", "two")
## [1] "one"


# by index with complex expressions
switch(2, {"one"}, {"two"})
## [1] "two"


# by index with complex named expression
switch(1, foo={"one"}, bar={"two"})
## [1] "one"


# by name with complex named expression
switch("bar", foo={"one"}, bar={"two"})
## [1] "two"

아래 튜토리얼을 참고한 포스팅입니다. 

https://www.tutorialspoint.com/r/r_operators.htm 

반응형

'Tools > R' 카테고리의 다른 글

R - (7) 함수  (0) 2017.02.19
R - (6) 반복문  (0) 2017.02.17
R - (4) 연산자  (0) 2017.02.15
R - (3) 변수  (0) 2017.02.15
R - (2) R의 데이터 타입 (자료구조)  (0) 2017.02.13

Tools/R

R - (4) 연산자

2017. 2. 15. 01:53
반응형
4. 연산자

연산자는 산술적, 논리적 연산을 위한 것이다.  R에는 아래와 같은 연산자들이 있다.

  • 산술 연산자 (Arithmetic Operators)
  • 관계 연산자 (Relational Operators)
  • 논리 연산자 (Logical Operators)
  • 할당 연산자 (Assignment Operators)
  • 기타 연산자

산술 연산자 


OperatorDescriptionExample
+두 벡터를 더함

v <- c(2,5.5,6) t <- c(8, 3, 4) print(v+t)

[1] 10.0  8.5  10.0
두 벡터를 뺌

v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v-t)

[1] -6.0  2.5  2.0
*두 벡터를 곱함
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v*t)
[1] 16.0 16.5 24.0
/두 벡터를 나눔
v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v/t)
[1] 0.250000 1.833333 1.500000
%%

두 벡터를 나눈 후 나머지

v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v%%t)
[1] 2.0 2.5 2.0
%/%

나눗셈의 몫

v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v%/%t)
[1] 0 1 1
^

지수

v <- c( 2,5.5,6)
t <- c(8, 3, 4)
print(v^t)
[1]  256.000  166.375 1296.000
관계 연산자


OperatorDescriptionExample
>

왼쪽에 있는 벡터의 엘리먼트가 오른쪽에 있는 벡터의 엘리먼트보다 큰지를 체크한다. 

v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v>t)
[1] FALSE  TRUE FALSE FALSE
<

오른쪽에 있는 벡터의 엘리먼트가 왼쪽에 있는 벡터의 엘리먼트보다 큰지를 체크한다.

v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v < t)
[1]  TRUE FALSE  TRUE FALSE
==

벡터들의 엘리먼트들이 같은지를 체크한다.

v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v == t)
[1] FALSE FALSE FALSE  TRUE
<=

왼쪽에 있는 벡터들의 엘리먼트가 오른쪽에 있는 벡터의 엘리먼트보다 작거나 같은지를 체크한다.

v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v<=t)
[1]  TRUE FALSE  TRUE  TRUE
>=

왼쪽에 있는 벡터들의 엘리먼트가 오른쪽에 있는 벡터의 엘리먼트보다 크거나 같은지를 체크한다.

v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v>=t)
[1] FALSE  TRUE FALSE  TRUE
!=

벡터들의 엘리먼트가 다른지를 체크한다.

다르면 TRUE, 같으면 FALSE

v <- c(2,5.5,6,9)
t <- c(8,2.5,14,9)
print(v!=t)
[1]  TRUE  TRUE  TRUE FALSE
논리 연산자

논리 연산자는 logical, numeric, complex 타입의 벡터에만 적용 가능하며, numeric이나 complex 타입에 적용될 경우 1보다 큰 모든 수들은 TRUE라고 간주된다. 즉, 논리 연산자는 0과 1을 대상으로 적용된다.

OperatorDescriptionExample
&

&은 element-wise AND 이다. 각 원소별로 AND 연산을 적용한 결과를 만든다.

v <- c(3,1,TRUE,2+3i)
t <- c(4,1,FALSE,2+3i)
print(v&t)
[1]  TRUE  TRUE FALSE  TRUE
|&은 element-wise OR 이다. 각 원소별로 OR연산을 적용한 결과를 만든다.
v <- c(3,0,TRUE,2+2i)
t <- c(4,0,FALSE,2+3i)
print(v|t)
[1]  TRUE FALSE  TRUE  TRUE
!

element-wise NOT 이다.

v <- c(3,0,TRUE,2+2i)
print(!v)
[1] FALSE  TRUE FALSE FALSE
&, | 연산자가 element-wise 연산자인 반면, &&과 ||은 벡터의 첫번째 element 끼리 논리 연산을 적용한다.

OperatorDescriptionExample
&&

벡터의 첫번째 원소끼리 & 연산한 값

v <- c(3,0,TRUE,2+2i)
t <- c(1,3,TRUE,2+3i)
print(v&&t)
[1] TRUE
||벡터의 첫번째 원소끼리 | 연산한 값
v <- c(0,0,TRUE,2+2i)
t <- c(0,3,TRUE,2+3i)
print(v||t)
[1] FALSE

할당 연산자

벡터에 값을 할당할 때 쓰이는 연산자이다.

OperatorDescriptionExample

<−

or

=

or

<<−

왼쪽에 있는 변수에 값을 할당한다.
v1 <- c(3,1,TRUE,2+3i)
v2 <<- c(3,1,TRUE,2+3i)
v3 = c(3,1,TRUE,2+3i)
print(v1)
print(v2)
print(v3)
[1] 3+0i 1+0i 1+0i 2+3i
[1] 3+0i 1+0i 1+0i 2+3i
[1] 3+0i 1+0i 1+0i 2+3i

->

or

->>

오른쪽에 있는 변수에 값을 할당한다. 

c(3,1,TRUE,2+3i) -> v1
c(3,1,TRUE,2+3i) ->> v2 
print(v1)
print(v2)
[1] 3+0i 1+0i 1+0i 2+3i
[1] 3+0i 1+0i 1+0i 2+3i
기타 연산자

이 연산자는 일반적인 논리, 산술 연산자가 아니며, 특수한 상황에서 쓰이는 연산자이다.

OperatorDescriptionExample
:숫자의 시퀀스를 생성하는 연산자
v <- 2:8
print(v) 
[1] 2 3 4 5 6 7 8
%in%

엘리멘터가 벡터에 속해있는지를 체크하는 연산자

v1 <- 8
v2 <- 12
t <- 1:10
print(v1 %in% t) 
print(v2 %in% t) 
[1] TRUE
[1] FALSE
%*%

행렬을 그것의 transpose와 행렬곱셈을 할 때 쓰인다.

M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
t = M %*% t(M)
print(t)
      [,1] [,2]
[1,]   65   82
[2,]   82  117

아래 튜토리얼을 참고한 포스팅입니다. 

https://www.tutorialspoint.com/r/r_operators.htm 

반응형

'Tools > R' 카테고리의 다른 글

R - (6) 반복문  (0) 2017.02.17
R - (5) If, else if, switch  (0) 2017.02.15
R - (3) 변수  (0) 2017.02.15
R - (2) R의 데이터 타입 (자료구조)  (0) 2017.02.13
R - (1) Introduction  (0) 2017.02.13

Tools/R

R - (3) 변수

2017. 2. 15. 01:38
반응형

https://www.tutorialspoint.com/r/r_variables.htm



변수


변수는 변수명을 통해 프로그램에서 데이터를 조작할 수 있도록 한다. 변수를 통하여 여러가지 자료구조를(atomic vector, vector, R-Object들의 여러가지 조합) 저장할 수 있다. 변수명에는 숫자, 문자, ., _가 포함될 수 있으며, 문자 또는 .을 첫글자로 하여야 한다. 단 .를 첫글자로 할 때는 .뒤에 숫자가 오면 안된다. 아래의 예를 참고하라.





변수 할당


# Assignment using equal operator.
var.1 = c(0,1,2,3)           

# Assignment using leftward operator.
var.2 <- c("learn","R")   

# Assignment using rightward operator.   
c(TRUE,1) -> var.3           

print(var.1)
cat ("var.1 is ", var.1 ,"\n")
cat ("var.2 is ", var.2 ,"\n")
cat ("var.3 is ", var.3 ,"\n")


변수할당은 = 또는 <-, -> 을 통해 할 수 있다. 또한 출력은 print(), cat()을 통해 할 수 있다. cat() 함수는 여러개의 인풋을 합쳐서 프린트한다.


결과


[1] 0 1 2 3
var.1 is  0 1 2 3 
var.2 is  learn R 
var.3 is  1 1 



변수들의 데이터 타입


R에서 변수의 데이터 타입은 변수에 할당되는 R-Object의 데이터 타입을 따른다. 그래서 R을 동적인 언어(dynamically typed language)라고 부른다. R에서는 변수의 데이터 타입이 하나에 고정되는 것이 아니라 계속해서 바꿀 수 있다. 


var_x <- "Hello"
cat("The class of var_x is ",class(var_x),"\n")

var_x <- 34.5
cat("  Now the class of var_x is ",class(var_x),"\n")

var_x <- 27L
cat("   Next the class of var_x becomes ",class(var_x),"\n")


The class of var_x is  character 
   Now the class of var_x is  numeric 
      Next the class of var_x becomes  integer



변수 찾기


현재 사용되고 있는 변수들의 목록을 보기 위해서는 ls() 함수를 이용한다. 또한 ls() 함수는 변수를 찾기 위해 '패턴'을 이용할 수도 있다. 


print(ls())


[1] "my var"     "my_new_var" "my_var"     "var.1"      
[5] "var.2"      "var.3"      "var.name"   "var_name2."
[9] "var_x"      "varname" 



# List the variables starting with the pattern "var".
print(ls(pattern = "var"))   


[1] "my var"     "my_new_var" "my_var"     "var.1"      
[5] "var.2"      "var.3"      "var.name"   "var_name2."
[9] "var_x"      "varname"  



주의할 점은 .으로 시작하는 변수들은 hidden 이다. 이것을 보기 위해서는 아래와 같이 all.name 파라미터를 TRUE로 설정한다.


print(ls(all.name = TRUE))



변수 삭제


변수는 rm() 함수를 사용해 지울 수 있다. 


rm(var.3)
print(var.3)


위의 스크립트를 실행시키면 var.3 변수를 삭제시키고 두 번째 줄에서는 에러가 뜬다.


rm(list = ls())
print(ls())


모든 변수를 지우고 싶으면 rm()과 ls()를 위와 같이 결합한다.



반응형

'Tools > R' 카테고리의 다른 글

R - (6) 반복문  (0) 2017.02.17
R - (5) If, else if, switch  (0) 2017.02.15
R - (4) 연산자  (0) 2017.02.15
R - (2) R의 데이터 타입 (자료구조)  (0) 2017.02.13
R - (1) Introduction  (0) 2017.02.13
반응형

https://www.tutorialspoint.com/r/r_data_types.htm


일반적인 프로그래밍에서는 값들을 저장하기 위하여 다양한 변수(Variables)들이 필요하다. 변수는 값을 저장한 메모리의 위치를 나타낸다. 이것은 변수를 만들면 그것이 메모리를 일정 공간을 차지한다는 것을 뜻한다. 문자, 정수, 실수, 진릿값 등 다양한 데이터를 변수에 저장하는 것이 필요할 것이다. 운영체제는 이러한 데이터 타입에 알맞게 변수에 메모리를 할당한다. 


R에서는 C나 Java와 같은 프로그래밍 언어와는 다르게 R 에서는 변수를 만들 때 데이터 타입을 선언하지 않는다. 변수는 R-Object로 할당되며 R-Object의 데이터타입이 변수의 데이터타입이 된다. 다양한 타입의 R-Object가 있지만 자주 사용되는 R-Object의 타입은 아래와 같다.



자주 사용하는 데이터 타입


  • Vectors
  • Lists
  • Matrices
  • Arrays
  • Factors
  • Data Frames

R-Object 중 가장 심플한 것은 vector object이고, 이 atomic vectors 또는 classes of vectors라고 불리는 것에는 아래와 같이 6개의 데이터 타입이 있다. 다른 R-Object들은 이 atomic vectors를 기반으로 한다.


  • Logical     
      • ex) TRUE, FALSE
  • Numeric
      • 12.3, 5, 999
  • Integer
      • 2L, 34L
  • Complex
      • 3+2i
  • Character
      • 'a', 'good'
  • Raw
      • "Hello" 는 48 64 6c 6c 6f로 저장된다.

atomic vectors

v <- TRUE 
print(class(v))

v <- 23.5
print(class(v))

v <- 2L
print(class(v))

v <- 2+5i
print(class(v))

v <- "TRUE"
print(class(v))

v <- charToRaw("Hello")
print(class(v))


결과 : 

[1] "logical"

[1] "numeric"
[1] "integer"
[1] "complex"
[1] "character"
[1] "raw"



Vectors

R 언어에서 가장 많이 사용되고 기본적인 R-Object는 Vectors이다. 이것은 위의 열거된 atomic vector들을 저장한다. Vectors는 c() 함수를 사용하여 만들 수 있다. 이것은 엘리먼트들을 벡터로 합친다는 뜻이다. (combine의 c)



# Create a vector.
apple <- c('red','green',"yellow")
print(apple)

# Get the class of the vector.
print(class(apple))



[1] "red"   "green" "1"    
[1] "character"




Matrices



매트릭스는 2차원의 데이터셋이다. 이것은 매트릭스 함수에 벡터를 제공함으로써 만들 수 있다.



# Create a matrix.
M = matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
print(M)
print(class(M))


     [,1] [,2] [,3]
[1,] "a"  "a"  "b" 
[2,] "c"  "b"  "a" 
[1] "matrix"


Arrays


매트릭스는 2차원에 한정되지만 arrays는 어떠한 차원으로 만들 수 있다.


# Create an array.

a <- array(c('green','yellow'),dim = c(3,3,2))

print(a)


, , 1

     [,1]     [,2]     [,3]    
[1,] "green"  "yellow" "green" 
[2,] "yellow" "green"  "yellow"
[3,] "green"  "yellow" "green" 

, , 2

     [,1]     [,2]     [,3]    
[1,] "yellow" "green"  "yellow"
[2,] "green"  "yellow" "green" 
[3,] "yellow" "green"  "yellow"


위 코드는 3차원의 array를 만들고, 원소들을 차례대로 green, yellow로 지정한다.


Factors


Factors는 vector로 만들어지는 R-object이다. Factors는 vector의 element들의 고유값(distinct value)를 레이블로 저장한다. 이 레이블들은 벡터 원소 타입이 어떻든 간에 항상 문자이다. Factors는 통계적 모델링에 유용하다. Factors는 factor()함수를 사용하여 만들 수 있다. nlevels() 함수를 통해 factors의 레벨을 알 수 있다.



# Create a vector.
apple_colors <- c('green','green','yellow','red','red','red','green')

# Create a factor object.
factor_apple <- factor(apple_colors)

# Print the factor.
print(factor_apple)
print(nlevels(factor_apple))

[1] green  green  yellow red    red    red    green 
Levels: green red yellow
[1] 3


Data Frames


데이터프레임은 구조화된 데이터 오브젝트이다. 매트릭스와 다른점은 데이터프레임은 컬럼으로 어떠한 데이터타입이든 넣을 수 있다. 첫 번째 컬럼은 numeric, 두 번째 컬럼은 문자열, 세 번째 컬럼은 논릿값 등 자유롭게 지정할 수 있다. 이것은 같은 길이의 vector들의 list로 볼 수 있다.


데이터 프레임은 data.frame() 함수를 통해 생성할 수 있다.


# Create the data frame.

BMI <-  data.frame(
   gender = c("Male", "Male","Female"), 
   height = c(152, 171.5, 165), 
   weight = c(81,93, 78),
   Age = c(42,38,26)
)
print(BMI)

gender height weight Age
1   Male  152.0     81  42
2   Male  171.5     93  38
3 Female  165.0     78  26



반응형

'Tools > R' 카테고리의 다른 글

R - (6) 반복문  (0) 2017.02.17
R - (5) If, else if, switch  (0) 2017.02.15
R - (4) 연산자  (0) 2017.02.15
R - (3) 변수  (0) 2017.02.15
R - (1) Introduction  (0) 2017.02.13

Tools/R

R - (1) Introduction

2017. 2. 13. 01:06
반응형

원문 : https://www.tutorialspoint.com/r/index.htm


R tutorial


R은 통계 분석, 그래픽 표현 그리고 리포팅을 위한 프로그래밍 언어 및 소프트웨어 환경이다. R은 뉴질랜드 오클랜드 대학교의 Ross Ihaka and Robert Gentleman에 의해 만들어졌고, 현재는 R Development Core Team가 R을 개발하고 있다. R은 GNU(General Public License) 라이센스하에서 자유롭게 이용가능하며, 리눅스, 윈도우즈, 맥과 같은 다양한 운영체제에 컴파일된 바이너리를 제공하고 있다.  이 프로그래밍 언어 R은 두 명의 개발자, Ross Ihaka and Robert Gentleman 이름의 가장 앞 글자를 딴 것이다. 그리고 Bell Labs에서 만든 프로그래밍 언어 S를 근간으로한다.


대상 독자


이 튜토리얼은 R을 이용하여 통계 소프트웨어를 만들고자하는 소프트웨어 개발자, 통계학자, 데이터 마이너를 대상으로 한다. 만약 당신이 R에 처음이라면, 이 튜토리얼을 통해 R 언어의 대부분의 컨셉을 이해할 수 있고, 이를 통해 더 높은 레벨의 전문가가 될 수 있을 것이다.


선행 조건


이 튜토리얼을 시작하기 앞서 컴퓨터 프로그래밍 언어의 용어들에 대한 기본적인 이해가 필요하다. 프로그래밍 언어에 대한 기본적인 이해는 R 언어의 컨셉을 이해하고 학습하는데 도움이 될 것이다. 


반응형

'Tools > R' 카테고리의 다른 글

R - (6) 반복문  (0) 2017.02.17
R - (5) If, else if, switch  (0) 2017.02.15
R - (4) 연산자  (0) 2017.02.15
R - (3) 변수  (0) 2017.02.15
R - (2) R의 데이터 타입 (자료구조)  (0) 2017.02.13