r - 用循环填充矩阵

标签 r simulation matrix

我正在尝试创建一个矩阵 n来自 kk mvn 使用循环协变量。
很简单,但到目前为止还没有工作......这是我的代码:

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) )。这意味着每次运行代码时,您将获得完全相同的伪随机变量集。
  • 接下来,您的数据将只是独立变量;它们实际上不会有任何多元结构(尽管这可能是您想要的)。一般来说,如果要生成多元数据,应该使用?mvrnorm ,来自 MASS包裹。 (有关更多信息,请参阅 here。)
  • 作为次要的一点,如果你想要标准的正常数据,你不需要指定 mu = 0sigma = 1 ,因为这些是 rnorm() 的默认值.
  • 您不需要循环来填充 R 中的矩阵,只需生成任意数量的值并使用 data= 直接添加它们。 matrix() 中的参数功能。如果您确实致力于使用循环,那么您可能应该使用双循环,以便您在列上循环,并且在每个循环内,在行上循环。 (请注意,这是在 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)
       }
    }
    

    关于r - 用循环填充矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14685911/

    相关文章:

    python - Lennard-Jones 势模拟

    r - 通过预计算加速矩阵乘积

    matrix - glsl 向量*矩阵与 hlsl 不同

    r - 按顺序匹配向量

    javascript - 用鼠标在网页上模拟震颤(例如帕金森病)?

    c - 矩阵与 vector 相乘

    r - 使用 KnitR 在 R 中以编程方式创建 Markdown 表

    r - 在神经网络中的函数 a(i) 和 b(j) 之间进行插值

    r - xgboost 质量是如何计算的?