Можно ли векторизовать функции, которые выводят объекты bigz? - PullRequest
1 голос
/ 18 июня 2020

Я подозреваю, что должен быть какой-то способ, например gmp s factorialZ кажется предварительно векторизованным:

> library(gmp)
> factorialZ(0:9)
Big Integer ('bigz') object of length 10:
 [1] 1      1      2      6      24     120    720    5040   40320  362880

, и кажется, что его удобно использовать с базовыми функциями R, которые принимают векторный ввод и выдача векторного вывода

> cumsum(factorialZ(0:9))
Big Integer ('bigz') object of length 10:
 [1] 1      2      4      10     34     154    874    5914   46234  409114

Однако, вероятно, из-за принуждения, попытка Vectorize функции, выводящей объекты bigZ, будет встречена с ужасной ошибкой:

leftFactorial<-function(n)
{
  sum(factorialZ(0:(n-1)))
}
> Vectorize(leftFactorial)(1:10)
  [1] 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 01 00 00
 [36] 00 01 00 00 00 01 00 00 00 04 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 0a 00 00 00 01 00 00 00 01 00
 [71] 00 00 01 00 00 00 22 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 9a 00 00 00 01 00 00 00 01 00 00 00 01
[106] 00 00 00 6a 03 00 00 01 00 00 00 01 00 00 00 01 00 00 00 1a 17 00 00 01 00 00 00 01 00 00 00 01 00 00 00
[141] 9a b4 00 00 01 00 00 00 01 00 00 00 01 00 00 00 1a 3e 06 00

Итак, что нам делать, если мы хотим Vectorize функцию, которая выводит объекты bigZ?

...