可能性の重複:
Randomly selecting values from an existing matrix after adding a vector (in R)再:ランダム(Rで)ループの追加、行列から値を選択する
これは先週から私の質問にフォローアップすることができますです見つけられるhere。この質問を同じ場所に投稿したり、新しい質問として投稿したりするのが適切かどうかはわかりませんでした。
最後に、新しいベクトルをバインドした後、行列から値をランダムに削除することを尋ねました。答えは非常に便利でしたが、非正方行列を使用しているときにバグが見つかりました。私はループ内でコードを実行しており、毎回行列の合計を取って、正しく動作していることを確認していますが、合計が変わっていることがわかりました。これは、コードが行列の間違った値(私はそれを選択して置き換えるだけです)。ここ
コードである:この場合
mat1<-matrix(c(1,0,1,0, 0,1,1,1, 1,0,0,0, 1,0,0,1, 1,1,1,1, 0,0,0,1),byrow=F, nrow=4)
I.vec<-c(0,1,1,1,0,0)
foo <- function(mat, vec) {
nr <- nrow(mat)
nc <- ncol(mat)
cols <- which(vec == 1L)
rows <- sapply(seq_along(cols),
function(x, mat, cols) {
ones <- which(mat[,cols[x]] == 1L)
sample(ones, 1)
}, mat = mat, cols = cols)
ind <- (nr*(cols-1)) + rows
mat[ind] <- 0
mat <- rbind(mat, vec)
rownames(mat) <- NULL
mat
}
set.seed(2)
for (j in 1:1000){ #run this vector through the simulations
I.vec2=sample(I.vec,replace=FALSE) #randomize interactions
temp=foo(mat1,I.vec2) #run foo function
prop=sum(temp)
print.table(prop)
}
、時々行列の和は13であり、時にはそれが常に= SUM(MAT1)= 13
なければならない場合、14であります私はコードをはがそうとしましたが、行機能以外はすべて正常に動作していると思います。
"フォローアップの質問"は、ローカライズされた解決策につながるため、一般的にこのサイトのフォーマットには適していません。フォローアップが受け入れられた答えに問題を提示するとき、これは特に真実です。以前の質問だけを見ている人は、それがあなたが期待した通りに動作しなかったことを知っていると思われる人は他にどのようにありますか?このサイトのすばらしいことの1つは、あなたが質問することによって他人を助けることができることです。 –
申し訳ありません!フォローアップを投稿することを避けるべきですか?私は他の質問にどのように追加するか分からなかった。 – Laura
「Laura」という名前の2つのアカウントが一緒にマージする必要があるようです:http://stackoverflow.com/users/866870/laura and http://stackoverflow.com/users/874102/laura。私は司会者に[email protected]にメールを送り、彼らに知らせてあなたのためにそれらをマージするように頼んでいます。 – Chase