用循环填充矩阵

时间:2013-02-04 00:16:53

标签: r simulation matrix

我正在尝试使用n使用k mvn协变量创建矩阵k。 非常简单但到目前为止还没有工作......这是我的代码:

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)
       }

缺少什么?

3 个答案:

答案 0 :(得分:10)

我在这里看到了几件事:

  1. 您可能希望为可复制性(set.seed(20430))设置随机种子。这意味着每次运行代码时,您都将获得完全相同的伪随机变量集。
  2. 接下来,您的数据将只是独立的变量;他们实际上不会有任何多变量结构(虽然这可能是你想要的)。通常,如果要生成多变量数据,则应使用?mvrnorm包中的MASS。 (有关详细信息,请参阅here。)
  3. 作为次要问题,如果您想要标准普通数据,则无需指定mu = 0sigma = 1,因为它们是{{{I}的默认值1}}。
  4. 您不需要循环来填充R中的矩阵,只需生成任意数量的值,然后使用rnorm()函数中的data=参数直接添加它们。如果您真的致力于使用循环,那么您应该使用双循环,以便循环遍历列,并在每个循环内循环遍历行。 (请注意,这是一种非常低效的R代码编写方式 - 尽管我一直这样做;-)。
  5. 最后,我不知道matrix()应该在您的代码中做什么。
  6. 这是实现您的目标的基本方法:

    p

    如果你真的想使用循环,你可以这样做:

    set.seed(20430)
    n   = 1000
    k   = 5
    dat = rnorm(n*k)
    x   = matrix(data=dat, nrow=n, ncol=k)
    

答案 1 :(得分:1)

A=c(2,3,4,5);# In your case row terms
B=c(3,4,5,6);# In your case column terms
x=matrix(,nrow = length(A), ncol = length(B));
for (i in 1:length(A)){
     for (j in 1:length(B)){
          x[i,j]<-(A[i]*B[j])# do the similarity function, simi(A[i],B[j])       
     }
}
x # matrix is filled

我从问题的角度思考。

答案 2 :(得分:0)

首先定义矩阵

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

运行两个循环以对行进行i迭代,对列进行j迭代,mine是可交换的相关结构

for (i in 1:10)
{ 
  for (j in 1:10) 
  {
    if (i==j) {E[i,j]=1}
    else {E[i,j]=0.6}
  }
};