5章値の書き換え

手元の仮想デッキはもうゲームをできる状態になっているでしょうか。残念ながら、さすがにそこまではできあがっていません。デッキのポイントシステムと多くのカードゲームのポイントシステムにはズレがあります。たとえば、戦争ゲームやポーカーでは、エースはキングよりも高いポイントになります。1ではなく14になるのです。

ここでは、戦争、ハーツ、ブラックジャックの3種類のゲームに合わせてデッキのポイントシステムを3回変更します。これらのゲームは、データセット内の値の変更について、それぞれ少し異なることを教えてくれます。まず、操作できるデッキのコピーを作っておきましょう。

deck2 <- deck

こうすれば、とんでもないことが起きてしまったときにフォールバックできるきれいなデッキを残しておけます。

5.1 その場での値の変更

Rの記法を使えば、Rオブジェクト内の値を書き換えられます。まず書き換えたい値(1つでも複数でも)を表現します。次に、割り当て演算子の<-を使って値を上書きします。Rは、元のオブジェクトの中の選択された値を書き換えます。それでは、実際に試してみましょう。

vec <- c(0, 0, 0, 0, 0, 0)
vec
## 0 0 0 0 0 0

vecの先頭の値は、次のようにして選択します。

vec[1]
## 0

そして、次のようにすればこの値を書き換えられます。

vec[1] <- 1000
vec
## 1000    0    0    0    0    0

新しい値の個数と選択された値の個数が同じであれば、複数の値を一度に書き換えることができます。

vec[c(1, 3, 5)] <- c(1, 1, 1) vec ## 1 0 1 0 1 0 vec[4:6] ...

Get RStudioではじめるRプログラミング入門 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.