No.21618 【R】行和と列和がゼロになる、行と列の一括削除  【赤羽】 2015/04/22(Wed) 23:01

青木先生,
赤羽と申します,ご教示をよろしくお願いいたします。

行列において,
行ベクトルの行和がゼロになる行と,
列ベクトルの列和がゼロになる列の,
一括削除のプログラムをご教示いただければ,大変に助かります。

【背景】
テキストマイニングで,文書−語の大規模な行列を扱います。

トピックモデル(LDA)の計算上,
行ベクトルの行和,列ベクトルの列和がゼロになる行と列を削除する必要があります。

EXCELで手作業をしていますが,非常に煩雑な作業であることから,
Rプログラムで一括処理をしたいと希望しています。

Rプログラムの初学者であるため,プログラムを作成できません。

どうぞ,ご教示をよろしくお願いいたします。

No.21619 Re: 【R】行和と列和がゼロになる,行と列の一括削除  【青木繁伸】 2015/04/23(Thu) 06:30

a <- matrix(1:100, 10)
a[c(2,5,8),] <- a[, c(4,7)] <- 0
a
のような行列
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 11 21 0 41 51 0 71 81 91
[2,] 0 0 0 0 0 0 0 0 0 0
[3,] 3 13 23 0 43 53 0 73 83 93
[4,] 4 14 24 0 44 54 0 74 84 94
[5,] 0 0 0 0 0 0 0 0 0 0
[6,] 6 16 26 0 46 56 0 76 86 96
[7,] 7 17 27 0 47 57 0 77 87 97
[8,] 0 0 0 0 0 0 0 0 0 0
[9,] 9 19 29 0 49 59 0 79 89 99
[10,] 10 20 30 0 50 60 0 80 90 100
があるとき,
b <- a[rowSums(a) != 0, colSums(a) != 0]
によって,
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 11 21 41 51 71 81 91
[2,] 3 13 23 43 53 73 83 93
[3,] 4 14 24 44 54 74 84 94
[4,] 6 16 26 46 56 76 86 96
[5,] 7 17 27 47 57 77 87 97
[6,] 9 19 29 49 59 79 89 99
[7,] 10 20 30 50 60 80 90 100
の行列が得られます

No.21620 Special Thanks(Re: 【R】行和と列和がゼロになる,行と列の一括削除)  【赤羽】 2015/04/23(Thu) 22:15

青木先生,
赤羽と申します,ご教示をいただき誠にありがとうございます。

行列の周辺和をとり,subset関数で条件抽出をするのか,と,
自分でも考えていましたが,
まさか,論理を使ったこのような方法があるとは。

びっくりしました。
感激しました。
しびれました。

勇気を振り絞って,投稿させていただき,大変に良い勉強をさせていただきました。

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