SlideShare a Scribd company logo
R Language Definition
3 Evaluation of expressions
                   3.1〜3.2
        Version 2.15.0 
      (2012‐03‐30) DRAFT
    ほとんど和訳version1.1.0
     (2000‐June 15)DRAFT
  Tokyo.Lang.R#2 2012‐June 2
            @manazo            1
3 Evaluation of expressions
  (すべての表現式は値を持つ)
• ユーザーは表現式を構築し、それに対し評価
  機構を起動する

• 3.1 Simple evaluation(単純な評価)
• 3.2 Control structures(制御構造)



                                 2
3.1 Simple evaluation
               (単純な評価)
• 3.1.1 Constants(定数)
• 3.1.2 Symbol lookup(シンボルlookup)
• 3.1.3 Function calls(関数呼び出し)
• 3.1.4 Operators(演算⼦)




                                    3
3.1.1 Constants

> 1          > str(0x10L)
[1] 1        int 16
>str(1)      > 1e3L
num          [1] 1000
> 1L         > 1‐e3L
[1] 1         エラー:    オブジェクト
> str(1L)     'e3L' がありません
int

                               4
3.1.2 Symbol lookup

• 名前がないと何も呼べない
• 名前それ⾃体がシンボル
• シンボルもRのオブジェクト
  – ⾔語⾃体のプログラミングを除く
> y<‐4
> y
[1] 4
                               5
3.1.3 Function calls

• 関数はコンマで区切られた引数のリストをも
  つ名前で起動
 – mean(1:10)
• 関数呼び出しはタグ付き引数を持つことがで
  きる
 – plot(x, y, pch = 3)
• タグの利⽤はたくさんのオプション引数を持
  つ関数に対し明⽩な便宜をもたらす
 – 順番を覚えておかなくてもよい                6
3.1.4 Operators

• RではC⾔語と類似した演算⼦を⽤いた数値
  表現の使⽤が可能
> 1 + 2
[1] 3


• 演算⼦の呼び出しと関数呼び出しに差はない
> a<‐1;x<‐5
> y <‐ 2 * (a + log(x))    > '<‐'(y,'*'(2,'+'(a,log(x))))
> y                        > y
[1] 5.218876               [1] 5.218876
                                     #演算⼦はクォートする 7
> x <‐ rnorm(5)
                                                    続き
> x
[1] ‐0.3106407 ‐0.1164581 ‐0.1114981 ‐0.3776523  0.2587829
> x[2]
[1] ‐0.1164581

> x<‐options()
> class(x)
[1] "list"

> x$prompt
[1] "> "
> '$'(x,prompt) #関数っぽく
[1] "> "
                                                             8
-,+

• 差、単項演算⼦としても⼆項演算⼦としても
• 和、同

> ‐1 #単項演算⼦の例
 [1] ‐1
> 1:5‐1 #ベクトルに対しても可
[1] 0 1 2 3 4
                            9
!

• 単項演算⼦、否定

>!TRUE
[1] FALSE
> !0:3 #ベクトルに対しても可
[1]  TRUE FALSE FALSE FALSE


                                  10
~

• チルダ、モデル式、単項演算⼦、⼆項演算⼦
> lm(dist~speed,data=cars)

Call:
lm(formula = dist ~ speed, data = cars)

Coefficients:
(Intercept)        speed  
    ‐17.579        3.932

                                              11
?

• help
>?"?" #演算⼦等はクォートする
Question    package:utils      R Documentation
Documentation Shortcuts
Description:
     These functions provide access to documentation.  
  Documentation on
     a topic with name 'name' (typically, an R object or a 
  data set)
     can be displayed by either 'help("name")' or '?name'.


                                                              12
:

• 数列 ⼆項演算⼦
> 1:5
[1]1 2 3 4 5

• モデル式においては交互作⽤
> glm(Sepal.Length~Sepal.Width:Petal.L
  ength,data=iris)

                                       13
*,/

• 乗除 ⼆項演算⼦
> 2 * 3
[1] 6
> x<‐matrix(1:9,3)
> x*x #⾏列の積ではない
     [,1] [,2] [,3]
[1,]    1   16   49
[2,]    4   25   64
[3,]    9   36   81         14
^

• 累乗                  > 10^(1:3)
> 5^2                 [1]   10  100 1000
[1] 25                > log10(10^(1:3))
> x^2                 [1] 1 2 3
     [,1] [,2] [,3]   > (1:3)^10
[1,]    1   16   49   [1]    1  1024 59049
[2,]    4   25   64
[3,]    9   36   81   > (1:3)^(1:3)
                      [1]  1  4 27           15
%x%

• スペシャル⼆項演算⼦
 – x can be replaced by any valied name




                                           16
%%

• 剰余(余り)
> 5 %% 2
[1] 1




                17
%/%

• 整数除算(Integer divide)商
> 5 %/% 2
[1] 2




                                18
%*%

• ⾏列の積                         
> a<‐matrix(c(2,‐3,‐1,4),2)   > b<‐matrix(c(1,2),2)
> a                           > b
     [,1] [,2]                     [,1]
[1,]    2   ‐1                [1,]    1
[2,]   ‐3    4                [2,]    2

                              > a %*% b
                                   [,1]
                              [1,]    0
                              [2,]    5

                                                            19
arabikiさんから
       `%o%` #バッククォートすると中⾝は⾒える
                                              %o%
• 外積(outer product)
> 1:9 %o% 1:9 # outer(1:9,1:9)
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]    1    2    3    4    5    6    7    8    9
 [2,]    2    4    6    8   10   12   14   16   18
 [3,]    3    6    9   12   15   18   21   24   27
 [4,]    4    8   12   16   20   24   28   32   36
 [5,]    5   10   15   20   25   30   35   40   45
 [6,]    6   12   18   24   30   36   42   48   54
 [7,]    7   14   21   28   35   42   49   56   63
 [8,]    8   16   24   32   40   48   56   64   72
 [9,]    9   18   27   36   45   54   63   72   81   20
%x%
• クロネッカー積
> x%x%x # x<‐matrix(1:9,3)
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]    1    4    7    4   16   28    7   28   49
             1             4              7
 [2,]    2    5    8    8   20   32   14   35   56
 [3,]    3    6    9   12   24   36   21   42   63
 [4,]    2    8   14    5   20   35    8   32   56
             2             5              8
 [5,]    4   10   16   10   25   40   16   40   64
 [6,]    6   12   18   15   30   45   24   48   72
 [7,]    3   12   21    6   24   42    9   36   63
             3             6              9
 [8,]    6   15   24   12   30   48   18   45   72
                                                     21
 [9,]    9   18   27   18   36   54   27   54   81
%in%

• 含まれる
> 2 %in% 1:10 
 [1] TRUE

> "Species" %in% names(iris)
[1] TRUE


                                      22
<,>,==,>=,<=

• ⼤⼩の⽐較
> 4 > 2
[1] TRUE




                          23
&, &&, |, ||
•&
       ベクトルの論理積
        > a<‐1:4; a[a>1 & a<4] #=> 2 3
• &&                       > a>1
                           [1] FALSE TRUE  TRUE  TRUE
       ふつうの論理積             > a>4
                           [1] FALSE FALSE FALSE FALSE
•|
                           #|  FALSE TRUE  TRUE  TRUE
       ベクトルの論理和                  1      2     3     4

        > a<‐1:4; a[a>1 | a>4] #=> 2 3 4
• ||
       ふつうの論理和                                           24
<‐, ‐>

• 付値(代⼊? 割り当て?)
• <‐
  – Left assignment,binary
• ‐>
  – Right assignment, binary




                                        25
$

• List subset, ⼆項演算⼦
>head(iris$Species)
 [1] setosa setosa setosa setosa setosa setosa
Levels: setosa versicolor virginica
> str(iris)
'data.frame':   150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species      : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 
   1 1 1 1 1 1 1 ...

                                                                    26
3.2 Control structures

• 3.2.1 if
• 3.2.2 Looping
• 3.2.3 repeat
• 3.2.4 while
• 3.2.5 for
• 3.2.6 switch


                                27
3.2.1 if
> x <‐ 0:3
> if(any(x<=0))y<‐log(1+x)else y<‐log(x)
  #xの中に0以下のものがあればlog(1+x)
> y
[1] 0.0000000 0.6931472 1.0986123 1.3862944
> log(0)
[1] ‐Inf #これをさけるために1を⾜す

• 代⼊(付値)可
> y <‐ if(any(x <= 0))log(1+x) else log(x)
                                              28
3.2.2 Looping

• Rの繰り返しは3つfor, while, repeat
• 評価された最後の⽂の値を返す
• ⽂の値をシンボルに付値することが可
• 暗黙の繰り返し
 – tapply, apply, lapply
 – ベクトル化された数値は繰り返し(for, while 
   and repeat)を使う必要がないかもしれない
 – 「あらびき⽇記」Rのapply徹底解説 参照
 http://d.hatena.ne.jp/a_bicky/20120425/1335312593   29
3.2.3 repeat

• ブロック⽂でなくてはならない

> i<‐0
> repeat{if((i<‐i+1)==5)
{cat(i,"¥n");break}}
5


                                    30
3.2.4 while

> i<‐0
> while(i<5){i<‐i+1;print(i)}
[1] 1 #0
[1] 2 #1
[1] 3 #2
[1] 4 #3
[1] 5 #4
                                    31
3.2.5 for

for(i in vector)
  statement1

• listでもよい
x<‐options();for(i in x)print(i)



                                     32
3.2.6 switch

> x<‐3
> switch(x,2+2,mean(1:10),rnorm(5))
[1]  ‐0.3719517  ‐1.7978237  ‐0.3606216  ‐
  0.6411431 ‐0.7713163
> switch(2,2+2,mean(1:10),rnorm(5))
[1] 5.5
> switch(6,2+2,mean(1:10),rnorm(5))
[1] NULL #超えて参照

                                         33
続き

> y<‐"果物"
> switch(y,果物="バナナ",野菜="ブロッコ
  リー","どちらも")
[1] "バナナ"
> y<‐"⾁類"
> switch(y,果物="バナナ",野菜="ブロッコ
  リー","どちらも")
[1]"どちらでも"
                             34
続き2
・普通の使⽤法は関数のある引数の⽂字値に応じて分岐
centre <‐ function(x, type){
switch(type,
  mean = mean(x),
  median = median(x),
  trimmed = mean(x, trim =.1))
}
x <‐ rcauchy(10)
centre(x,"mean")

                                 35
続き3

• 既存の選択肢のリストから選ぶためには
  switchは評価すべき項⽬を選ぶ最良の⽅法
  ではないかもしれない。
• eval(x[[cond]])経由でevalと部分集合演
  算⼦[[を直接使う⽅が望ましい
 – 意味がわかりませぬ。



                             36
ご静聴に感謝します。


             37

More Related Content

Viewers also liked (15)

PDF
Itroroduction to R language
chhabria-nitesh
 
PPTX
R programming language
Alberto Minetti
 
PPTX
R programming Language , Rahul Singh
Ravi Basil
 
PDF
Minetti master thesis
Alberto Minetti
 
ODP
Introduction to the language R
fbenault
 
PPTX
R programming language - Mustafa Wahedi
UNICORNS IN TECH
 
PDF
R Programming Overview
dlamb3244
 
PDF
R programming language: conceptual overview
Maxim Litvak
 
PDF
Data Analysis and Programming in R
Eshwar Sai
 
PPTX
A Workshop on R
Ajay Ohri
 
PPTX
R language tutorial
David Chiu
 
PPTX
An Interactive Introduction To R (Programming Language For Statistics)
Dataspora
 
PDF
R programming Basic & Advanced
Sohom Ghosh
 
PPTX
Chapter 6: Computing on the language (R Language Definition)
Nagi Teramo
 
PDF
SEO: Getting Personal
Kirsty Hulse
 
Itroroduction to R language
chhabria-nitesh
 
R programming language
Alberto Minetti
 
R programming Language , Rahul Singh
Ravi Basil
 
Minetti master thesis
Alberto Minetti
 
Introduction to the language R
fbenault
 
R programming language - Mustafa Wahedi
UNICORNS IN TECH
 
R Programming Overview
dlamb3244
 
R programming language: conceptual overview
Maxim Litvak
 
Data Analysis and Programming in R
Eshwar Sai
 
A Workshop on R
Ajay Ohri
 
R language tutorial
David Chiu
 
An Interactive Introduction To R (Programming Language For Statistics)
Dataspora
 
R programming Basic & Advanced
Sohom Ghosh
 
Chapter 6: Computing on the language (R Language Definition)
Nagi Teramo
 
SEO: Getting Personal
Kirsty Hulse
 

Similar to R language definition3.1_3.2 (20)

PDF
Rで学ぶデータマイニングI 第8章〜第13章
Prunus 1350
 
PPT
K010 appstat201201
t2tarumi
 
DOCX
Ⅰ. Rの基礎 2017
wada, kazumi
 
PDF
第1回R勉強会@東京
Yohei Sato
 
PDF
Rあんなときこんなとき(tokyo r#12)
Shintaro Fukushima
 
PDF
数式をnumpyに落としこむコツ
Shuyo Nakatani
 
PDF
Nagoya.R #12 入門者講習
Yusaku Kawaguchi
 
PDF
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
 
PPTX
Tokyo r33 beginner
Takashi Minoda
 
PDF
初心者講習会資料(Osaka.r#6)
Masahiro Hayashi
 
PDF
Tokyor23 doradora09
Nobuaki Oshiro
 
PDF
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
 
PDF
統計ソフトRの使い方_2015.04.17
hicky1225
 
PDF
Rプログラミング01 「はじめの一歩」 演習デモ
wada, kazumi
 
PPTX
mathemaical_notation
Kenta Oono
 
PDF
SappoRo.R #2 初心者向けWS資料
考司 小杉
 
PDF
Math tutorial public
Kenta Oono
 
PDF
テーマ別勉強会(R言語)#1.pdf
Takuya Kubo
 
PDF
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる 統計解析・データマイニング R言語入門
Koichi Hamada
 
Rで学ぶデータマイニングI 第8章〜第13章
Prunus 1350
 
K010 appstat201201
t2tarumi
 
Ⅰ. Rの基礎 2017
wada, kazumi
 
第1回R勉強会@東京
Yohei Sato
 
Rあんなときこんなとき(tokyo r#12)
Shintaro Fukushima
 
数式をnumpyに落としこむコツ
Shuyo Nakatani
 
Nagoya.R #12 入門者講習
Yusaku Kawaguchi
 
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
 
Tokyo r33 beginner
Takashi Minoda
 
初心者講習会資料(Osaka.r#6)
Masahiro Hayashi
 
Tokyor23 doradora09
Nobuaki Oshiro
 
初心者講習会資料(Osaka.R#7)
Masahiro Hayashi
 
統計ソフトRの使い方_2015.04.17
hicky1225
 
Rプログラミング01 「はじめの一歩」 演習デモ
wada, kazumi
 
mathemaical_notation
Kenta Oono
 
SappoRo.R #2 初心者向けWS資料
考司 小杉
 
Math tutorial public
Kenta Oono
 
テーマ別勉強会(R言語)#1.pdf
Takuya Kubo
 
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる 統計解析・データマイニング R言語入門
Koichi Hamada
 
Ad

More from Yoshiteru Kamiyama (7)

PPT
オイラーの公式で感じる次元の呪い
Yoshiteru Kamiyama
 
PDF
Tokyo.rの輪
Yoshiteru Kamiyama
 
PDF
Listを串刺し
Yoshiteru Kamiyama
 
PDF
rで踊るパスタ
Yoshiteru Kamiyama
 
PDF
Rでマンデルブロ集合
Yoshiteru Kamiyama
 
PPT
黄金比.再帰
Yoshiteru Kamiyama
 
PPT
医療費ts
Yoshiteru Kamiyama
 
オイラーの公式で感じる次元の呪い
Yoshiteru Kamiyama
 
Tokyo.rの輪
Yoshiteru Kamiyama
 
Listを串刺し
Yoshiteru Kamiyama
 
rで踊るパスタ
Yoshiteru Kamiyama
 
Rでマンデルブロ集合
Yoshiteru Kamiyama
 
黄金比.再帰
Yoshiteru Kamiyama
 
医療費ts
Yoshiteru Kamiyama
 
Ad

R language definition3.1_3.2