Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用循环填充矩阵_R_Simulation_Matrix - Fatal编程技术网

R 用循环填充矩阵

R 用循环填充矩阵,r,simulation,matrix,R,Simulation,Matrix,我试图通过k和kmvn协变量使用循环创建矩阵n。 非常简单,但到目前为止还不起作用。。。这是我的密码: n=1000 k=5 p=100 mu=0 sigma=1 x=matrix(data=NA, nrow=n, ncol=k) for (i in 1:k){ x [[i]]= mvrnorm(n,mu,sigma) } 缺少了什么?我在这里看到了一些东西: 您可能希望为可复制性设置随机种子(set.seed(20430))。这意味着每次运行代码时,都会得到

我试图通过
k
k
mvn协变量使用循环创建矩阵
n
。 非常简单,但到目前为止还不起作用。。。这是我的密码:

n=1000
k=5
p=100
mu=0
sigma=1
x=matrix(data=NA, nrow=n, ncol=k)


for (i in 1:k){
        x [[i]]= mvrnorm(n,mu,sigma)
       }

缺少了什么?

我在这里看到了一些东西:

  • 您可能希望为可复制性设置随机种子(
    set.seed(20430)
    )。这意味着每次运行代码时,都会得到完全相同的伪随机变量集
  • 接下来,您的数据将只是独立变量;它们实际上没有任何多元结构(尽管这可能是您想要的)。通常,如果要生成多变量数据,应使用包中的。(有关详细信息,请参阅。)
  • 次要的一点是,如果需要标准的正常数据,则不需要指定
    mu=0
    sigma=1
    ,因为这些是
    rnorm()
    的默认值
  • 不需要循环来填充R中的矩阵,只需生成任意多的值,并使用
    matrix()
    函数中的
    data=
    参数直接添加它们即可。如果您确实致力于使用循环,那么您可能应该使用双循环,以便在列上循环,在每个循环中,在行上循环。(注意,这是一种在R中编写代码的非常低效的方法——尽管我一直都在这样做;-)
  • 最后,我不知道
    p
    在您的代码中应该做什么 下面是一个基本的方法来做你似乎要做的事情:

    set.seed(20430)
    n   = 1000
    k   = 5
    dat = rnorm(n*k)
    x   = matrix(data=dat, nrow=n, ncol=k)
    
    如果您真的想使用循环,可以这样做:

    mu    = 0
    sigma = 1
    x     = matrix(data=NA, nrow=n, ncol=k)
    
    for(j in 1:k){
       for(i in 1:n){
            x[i,j] = rnorm(1, mu, sigma)
       }
    }
    
    A=c(2,3,4,5)#在您的情况下,行术语
    B=c(3,4,5,6)#在您的案例中,列术语
    x=矩阵(,nrow=长度(A),ncol=长度(B));
    (i在1中:长度(A)){
    对于(j/1:长度(B)){
    
    x[i,j]首先定义矩阵

    E<-matrix(data=0, nrow=10, ncol=10);
    

    矩阵不是那样工作的。请尝试使用
    x[,i]
    而不是
    x[[i]]
    。不使用循环的简单方法是
    x
    
    E<-matrix(data=0, nrow=10, ncol=10);
    
    for (i in 1:10)
    { 
      for (j in 1:10) 
      {
        if (i==j) {E[i,j]=1}
        else {E[i,j]=0.6}
      }
    };