【问题标题】:Populating a matrix of function evaluations in R without for-loop在没有for循环的情况下填充R中的函数评估矩阵
【发布时间】:2014-02-19 16:19:16
【问题描述】:

我想生成一个矩阵,其值是对具有两个参数的函数的求值。

到目前为止,以下是我想要的,但我怀疑在 R 中有更好的方法可以做到这一点,而不使用 for 循环。

x <- c(0.01, 0.1,1,10,100)
n <- length(x)
M <- matrix(NA, nrow=n, ncol=n)
for (i in 1:n){
 for (j in 1:n){
  M[i,j]<-x[i]^x[j]
 }
}

【问题讨论】:

    标签: r for-loop matrix


    【解决方案1】:

    使用outer函数:

    > outer(x,x,"^")
              [,1]      [,2]  [,3]  [,4]   [,5]
    [1,] 0.9549926 0.6309573 1e-02 1e-20 1e-200
    [2,] 0.9772372 0.7943282 1e-01 1e-10 1e-100
    [3,] 1.0000000 1.0000000 1e+00 1e+00  1e+00
    [4,] 1.0232930 1.2589254 1e+01 1e+10 1e+100
    [5,] 1.0471285 1.5848932 1e+02 1e+20 1e+200
    > identical(M,outer(x,x,"^"))
    [1] TRUE
    

    您可以使用函数名称或运算符的引号名称。另请注意,我测试outer 的答案与您的循环中的答案相同。总是测试!

    【讨论】:

      【解决方案2】:

      使用outer 函数:

      outer(x,x,"^")
      
                [,1]      [,2]  [,3]  [,4]   [,5]
      [1,] 0.9549926 0.6309573 1e-02 1e-20 1e-200
      [2,] 0.9772372 0.7943282 1e-01 1e-10 1e-100
      [3,] 1.0000000 1.0000000 1e+00 1e+00  1e+00
      [4,] 1.0232930 1.2589254 1e+01 1e+10 1e+100
      [5,] 1.0471285 1.5848932 1e+02 1e+20 1e+200
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-06
        • 1970-01-01
        • 1970-01-01
        • 2019-03-22
        • 2021-09-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多