[解決済み】Rで「non-numeric matrix extent」エラーに対処する方法は?
2022-01-26 12:08:55
質問
標準的な確率式を用いて、学生のt分布からシミュレーション値のデータフレームを生成しようとしています。使用する関数は以下の通りです。
matgen<-function(means,chi,covariancematrix)
{
cols<-ncol(means);
normals<-mvrnorm(n=500,mu=means,Sigma = covariancematrix);
invgammas<-rigamma(n=500,alpha=chi/2,beta=chi/2);
gen<-as.data.frame(matrix(data=NA,ncol=cols,nrow=500));
i<-1;
while(i<=500)
{
gen[i,]<-t(means)+normals[i,]*sqrt(invgammas[i]);
i<=i+1;
}
return(gen);
}
わかりにくいかもしれませんが、私は空のデータフレームを作ろうとしていて、それは列の数colsと500行に値を取り込みます。もちろん値は数値で、Rは9行目でそれを教えてくれます。
gen<-as.data.frame(matrix(data=NA,ncol=cols,nrow=500));
非数値的な行列の範囲」というエラーが発生しました。
を使った記憶があります。
as.data.frame()
を使用して行列をデータフレームに変換したところ、かなりスムーズに動作しました。数値でも。しかし、しばらく連絡を取っていなかったので、この問題の解決策を思い出したり、オンラインで見つけたりすることができないようです。試してみたのは
is.numeric()
,
as.numeric()
とか、NAの代わりに0を使ったりしていますが、何もうまくいきません。
解決方法は?
Rolandさんが指摘されたように、colが数値でないようなのが一つの問題点です。meansがデータフレームか行列か、str(mans)などで確認してみてください。もしそうなら、あなたのコードは 'non-numeric matrix extent' というエラーにならないはずです。
また、あなたのコードには他にもいくつか問題があります。私は簡略化した例を作成し、私が見つけたバグをコード内のコメントとして指摘しました。
library(MASS)
library(LearnBayes)
means <- cbind(c(1,2,3),c(4,5,6))
chi <- 10
matgen<-function(means,chi,covariancematrix)
{
cols <- ncol(means) # if means is a dataframe or matrix, this should work
normals <- rnorm(n=20,mean=100,sd=10) # changed example for simplification
# normals<-mvrnorm(n=20,mu=means,Sigma = covariancematrix)
# input to mu of mvrnorm should be a vector, see ?mvrnorm; but this means that ncol(means) is always 1 !?
invgammas<-rigamma(n=20,a=chi/2,b=chi/2) # changed alpha= to a and beta= to b
gen<-as.data.frame(matrix(data=NA,ncol=cols,nrow=20))
i<-1
while(i<=20)
{
gen[i,]<-t(means)+normals[i]*sqrt(invgammas[i]) # changed normals[i,] to normals [i], because it is a vector
i<-i+1 # changed <= to <-
}
return(gen)
}
matgen(means,chi,covariancematrix)
お役に立てれば幸いです。 P.S. Rでは、すべての行の最後に";"は必要ありません。
関連
-
[解決済み】'builtin'型のオブジェクトはsubsetableではない【重複
-
[解決済み] 変数の型(リスト)が無効です
-
[解決済み】library(ggplot2)でエラー:'ggplot2'というパッケージは存在しません。
-
[解決済み】match.fun(FUN)でのエラーについて)
-
[解決済み】「Error in stripchart.default(x1, ...) : invalid plotting method」エラーを回避する方法は?
-
[解決済み] テスト
-
[解決済み】各グループの上位3要素を計算する際に「数値型、論理型、複合型でのみ可能な演算」を回避する方法
-
[解決済み] Pandas DataFrameの行数を取得する方法は?
-
[解決済み] 情報を損なわずに因数を整数値に変換するには?
-
[解決済み】データフレームのカラムを数値型に変換する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】rbind エラー。"名前が以前の名前と一致しない"
-
[解決済み】x[[i]]でのエラー:レベル2で再帰的インデックス作成に失敗した
-
[解決済み】Rエラー。"新しい列は既存の列の後に穴を空ける"
-
[解決済み】ggplot boxplotでPosition-dodge警告?
-
[解決済み] 因子を日付形式に変換するにはどうすればいいですか?
-
[解決済み】エラー - replacement has [x] rows, data has [y].
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]
-
[解決済み】Rで「中断されたプロミスの評価を再開する」という警告を回避する