为什么“外部”函数不适用于R中的某些参数值?

时间:2018-05-23 10:29:32

标签: r

当我运行R命令时:

 outer(37:42, 37:42, complex, 1)

我收到错误

  

“昏暗中的错误(robj)< - c(dX,dY):dims [product 36]与对象的长度不匹配[37]”

在我的R会话中。但是当我跑步时

outer(36:42, 36:42, complex, 1) 

结果我有一个有效的矩阵。对于大于36的所有值,问题仍然存在。并且对于低于37的所有值都没有问题。

这是一个错误吗?

我的系统:Microsoft R Open 3.4.4 / RStudio 1.1.447 / Ubuntu 16.04

2 个答案:

答案 0 :(得分:0)

更具体地说,当运行带参数m:nm:n的函数时,只要n < (n - m + 1)^2 [citation needed] ,它就会返回错误。试着举例outer(20:23, 20:23, complex, 1)outer(20:24, 20:24, complex, 1),其中第一个会失败,但后者会赢,因为24 < (24-20+1)^2。我怀疑这与complexlength.out的第一个参数有关,它定义了要返回的向量的length - 我知道这不是解释。因此,您的第一个参数37:42将传递给length.out参数。这没有多大意义,所以如果我错了请纠正我,但我认为你想做的是以下几点:

outer(37:42, 37:42, function(x,y) {complex(1, real = x, imaginary = y)})

哪个输出:

       [,1]   [,2]   [,3]   [,4]   [,5]   [,6]
[1,] 37+37i 37+38i 37+39i 37+40i 37+41i 37+42i
[2,] 38+37i 38+38i 38+39i 38+40i 38+41i 38+42i
[3,] 39+37i 39+38i 39+39i 39+40i 39+41i 39+42i
[4,] 40+37i 40+38i 40+39i 40+40i 40+41i 40+42i
[5,] 41+37i 41+38i 41+39i 41+40i 41+41i 41+42i
[6,] 42+37i 42+38i 42+39i 42+40i 42+41i 42+42i

希望这有帮助。

答案 1 :(得分:0)

问题在于第四个论点:它应该命名为:

  

外(37:42,37:42,复杂,length.out = 1)

工作正常!