No.22626 Rによる行列の処理  【KUMON】 2018/10/24(Wed) 20:13

Rのプログラムに関する質問です。

各成分が0,1 の2値からなるn×m行列があります。
任意の列に対して,i行目が1ならi+1行目も1となるように変換するコードがうまく書けません。ご教授よろしくお願いいたします。

No.22627 Re: Rによる行列の処理  【青木繁伸】 2018/10/24(Wed) 20:52

以下のような列があったとき,あなたはどのような結果をお望みですか?

0
1
0
0
1
1
0
0
0
1
1
0
1
0
1
1
0
1
0

No.22629 Re: Rによる行列の処理  【KUMON】 2018/10/24(Wed) 21:45

青木先生

ご返信ありがとうございます。

0
1
1
0
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1

という結果です。

No.22632 Re: Rによる行列の処理  【青木繁伸】 2018/10/25(Thu) 21:30

以下のようにすることも出来ますが,
a = c(1, 0, 0, 1, 1, 0, 0, 0, 1, 1,  0, 1, 0, 1, 1, 0, 1, 0)
cat(a)
z = (a | c(0, a[-length(a)]))+0
cat(z)

No.22633 Re: Rによる行列の処理  【KUMON】 2018/10/30(Tue) 21:07

青木先生

ご回答ありがとうございます。

列ベクトルa の要素を1つずらしたb を使用して(頭は0で最後尾は削除したもの)
ifelse(a+b>0,1,0)と自解していましたが,

先生のコード (a|b)+0 がよくわかりません。解説していただけないでしょうか?


No.22634 Re: Rによる行列の処理  【KUMON】 2018/10/30(Tue) 21:25

分かりました!

論理和を使用しているのですね。+0を加えることでTRUE→1,FALSE→0と変換するわけですね。

参考になります。処理スピードが格段に上がりました。ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る