2.1 逐次処理

Rは記述されたプログラムを上から順番に実行している,逐次処理を行う言語である.

例えば以下のコードを実行すると,

a <- 10
a <- 20
print(a)
## [1] 20

となる.これは,a <- 10の後にb <- 20が実行され変数aの中身が20で上書きされたあとに,print(a)が実行されているためである.この順番を入れ替えると

a <- 10
print(a)
## [1] 10
a <- 20

aの中身は10となっている.これは,a <- 20が実行される前にaの中身を表示しているためである.

上から順番に実行されるということは,実行するコードよりも上のコードで定義されていない変数などが使えないということでもある.

例えば

print(xxx)
xxx <- 10

というコードを実行するとどうなるだろうか?

これは,print(xxx)が実行される時点でxxxという変数が無いので,エラーが返される.(実際に実行してみて欲しい).

Exercise 2.1 (逐次処理) 次の問題について解答となるプログラムを実装せよ.

  1. 与えられたベクトルxについて,5番目の要素をprint関数で表示せよ
x <- c(10, 3, 7, 2, 10, 39, 49)

#---
# xの5番目の要素を出力する処理を書く

#---
  1. substr(x, start, stop)という関数は,引数xを文字列として受け取り,startからstopまでの部分文字列を取り出す.

具体的には以下のように利用する.

x <- "Hello R World!"
print(substr(x, 3, 5)) # 3 ~ 5文字目を取り出す
## [1] "llo"
print(substr(x, 7, 7)) # 7文字目を取り出す
## [1] "R"

さて,tech-ml-studymettingという文字列を格納した変数sを作成して,sの部分文字列として,

  • 4から8文字目
  • 10文字目

をそれぞれ取り出す処理を記述せよ.