アルゴリズムの例をいくつか変更します。 最後の例では情報がありませんでした。私はもっと詳しく説明しています。おそらく、いくつかの基本的な問題がありますが、私はループに慣れていません。再帰的な結果をrに保存する
x<-matrix(c(1,1,1,1,
-1,-1,1,1,
-1,1,-1,1), nrow = 4)
w<-matrix(rep(0,15), nrow = 5)
d<-c(-1,1,1,1)
変数
v <- 10L
y <- 10L
e <- 10L
des <- 10L
m <- 0.5
初期値はループのアイデアは、私は= Dまでのxのすべての行のためのWの値を見つけることです。ループが表示されているかどうかははっきりしています。
このループは正常に機能していますが、最初の5行だけがループしています。条件(d = i)が満たされるまでxでループしていなければなりません。 私はそれが正しい方法ではないことを知っています。私は何をしたいのかを例示するだけです。その他のオプション(適用)は大歓迎です。
ループ
for(i in 1:4) {
# Multiplies every row of x by w. The w comes from the result of the loop.
v[i]<- t(w[i,]) %*% x[i,]
# Takes the sign of v.
y[i] <- if(v[i] >= 0) 1 else -1
# Value to use in the last line of the loop.
e[i] <- d[i]-y[i]
des[i] <- if(d[i] == y[i]) 1 else 0 #check if condition is satisfied
w[i+1,] <- w[i,]+(m*e[i]*x[i,])
}
所望の出力
w <- matrix(c(0,-1,0,1,1,1,1,
0,1,0,1,1,1,1,
0,1,2,1,1,1,1), nrow=7)
あなたのコード再現できないとDESでエラー 'エラーを生成します[I] < - もし(D [i]を== Y [i])と他の1 0:オブジェクトのデ" found'ません。再現可能なコードを入力してください。 –
私はパラメータとしてwを渡すように、ループを関数に囲んでいます。その後、元のwを上書きせずに、新しいwを含めて、その関数呼び出しの結果として望むものを返すことができます。それが必要なのかどうかはわかりません。 – Joy
@ Alfredo_MF、 'd'とは何ですか? –