以下の再現可能な例。シミュレーション ループがあり、その中に行列から行を削除する必要がある場合があります。特定の位置で削除する必要がある行に「NA」値を入力することでこれを行いました。次に、NA を含む行を削除するコード行があります。これはこれまでのところうまくいきました。私の問題は、現在、特定の方法でシミュレーションを実行しているため、マトリックスが 1 行になることがあります。これが発生すると、マトリックスが「文字」に変換され、シミュレーションがクラッシュします。
例:
mat<-matrix(1:10,5,2) #setting up a simplified example matrix
mat[3:5,1]<-NA #Giving 3 rows 'NA' values, for removal of these rows
mat<-mat[!is.na(mat[,1]),] #An example where my procedure works just fine
class(mat)
mat[2,1]<-NA #Setting 1 of the remaining 2 rows as NA
mat<-mat[!is.na(mat[,1]),] #Removing one of final two rows
class(mat) #No longer a matrix
最後にマトリックスとしての書式設定を失わないようにする方法はありますか? この問題は、「is.na」コマンドを使用したことが原因であると想定していますが、これを回避する良い方法が見つかりませんでした。
問題についてもう少し洞察を与えるために、これを行うためのより良い方法がある場合に備えて、私はあまりにも素朴すぎてまだ見つけることができません...私の実際のシミュレーションでは、行列に「指定された行の個体が生存している場合は 1、死亡している場合は '0' です。個人 (単一の行) が死亡した場合 (そして値が「1」から「0」になる場合)、その行を削除する必要があります。これを行う方法を知っていた唯一の方法は、「0」を「NA」に変更してから、NA を持つすべての行を削除することでした。この問題を回避する特定の列の「0」を含む行を削除する方法があれば、それは素晴らしいことです!