Целочисленная матрица в стане становится плоской
Я пытаюсь передать трехмерную структуру данных в Stan (в RStan), где записи должны быть целыми числами, потому что это требуется для функции в нисходящем направлении. Однако я испытываю затруднения, объявляя это.
Я попробовал прямой подход:
int x[n,n,k];
Но это дало мне ошибку
mismatch in number dimensions declared and found in context; ... dims declared=(n,n,k); dims found=(n*n*k)
Ясно, что по какой-то причине входной массив сглаживается (чего я не понимаю). Я даю ему простой трехмерный массив, без NA, размеры выглядят прямо перед тем, как я его пропущу. И на самом деле, то же самое происходит и с двумерными массивами, а это означает, что я даже не могу объявить набор двумерных матриц в качестве обходного пути.
Потом я попробовал
row_vector[K] x[N,N];
но это возвращает real
не int
, И когда я делаю что-то вроде
int row_vector[K] x[N,N];
это просто неправильный синтаксис.
Я также попытался передать логические значения, надеясь, что они будут преобразованы в целые числа, но нет. Я передал массивы, передал их с помощью as.matrix, я проверил их размерность как до, так и после внесения в список данных.
Это с версией 3.4.1 R на OSX 10.11.6, использующей самую последнюю версию stan, которая была только что скомпилирована из исходного кода, сегодня.
Что мне не хватает? ИЛИ, как я могу привести единственное действительное число к целому числу, чтобы целочисленная функция не ломалась?
(И, ГДЕ это документация? Лучшее, что я могу найти, это давно мертвые комментарии.)