小编Chi*_*har的帖子

如何解决 R 中的“非数字矩阵范围”错误?

我正在尝试使用标准随机方程从学生的 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);
}
Run Code Online (Sandbox Code Playgroud)

如果不清楚,我正在尝试创建一个空数据框,它接受列数和 500 行中的值。当然,这些值是数字,R 在第 9 行告诉我:

gen<-as.data.frame(matrix(data=NA,ncol=cols,nrow=500));
Run Code Online (Sandbox Code Playgroud)

有一个错误:“非数字矩阵范围”。

我记得as.data.frame()以前用来将矩阵转换为数据框,它工作得非常顺利。即使是数字。不过,我已经有一段时间没有联系了,似乎无法回忆或在网上找到解决此问题的方法。我在那里尝试了is.numeric(), as.numeric(), 0s 而不是 NA ,但没有任何效果。

r matrix dataframe

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

dataframe ×1

matrix ×1

r ×1