【问题标题】:Fill a matrix without using for()不使用 for() 填充矩阵
【发布时间】:2019-02-26 03:35:44
【问题描述】:

我有一个很长的矩阵,我想用rnorm(1) 填充它,但这需要很长时间(与下面的示例不同)。有没有其他方法,因为行数和列数总是相等但动态的。

my <- matrix(c(0), nrow= 3, ncol = 3)
for (i in 1:3){
  for (j in 1:3){
    my[i,j]<-rnorm(1)
  }
  }

【问题讨论】:

    标签: r matrix random


    【解决方案1】:

    为什么不这样做:

    matrix(rnorm(500), ncol = 5)
    

    【讨论】:

    • 我的实际函数不是 rnorm() 但我想在这里使用一些简单的东西。
    • 如果你的函数正在生成类似于rnorm() 的数据,那么它的工作原理是一样的。
    • 列数和行数必须始终相同。生成 5 列和 100 行
    • @firmo23 如果您的函数是矢量化的,那么这种方法将起作用。如果您的函数未矢量化,则使用Vectorize() 对其进行矢量化,这种方法将起作用。但是Vectorize() 只是循环隐藏——如果您的函数很慢,则无法根据需要多次调用它。将数字放入矩阵中很快。大量调用你的函数是很慢的。
    • @firmo23 我只是以这些数字为例,您可以随心所欲地即插即用。正如 gregor 所说,您可以进行矢量化,或者您可以从函数中生成所需的值,然后将其粘贴到具有预定义列的矩阵中。
    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2016-05-24
    • 2019-02-27
    相关资源
    最近更新 更多