R expss - 'не удалось найти функцию "setalloccol"' - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь поработать над некоторыми примерами в этой статье по поколениям таблиц, используя expss - https://cran.r-project.org/web/packages/expss/vignettes/tables-with-labels.html - однако я последовательно получаю сообщение об ошибке could not find function "setalloccol", используя самые основные c кросс-таблицы функций cro и fre с двумя переменными:

> cro(df$var1, df$var2)
Error in setalloccol(ans) : could not find function "setalloccol"

Я использую R Studio 1.2.1335 и переустановил пакеты dplyr, data.table, tidyr и сам по себе expss, но я все еще, кажется, получаю эту ошибку, когда все эти библиотеки работают. Я погуглил точную ошибку, с которой я столкнулся, и в этом абсолютно нет смысла, так что благодарю за любую помощь ...

Ответы [ 3 ]

2 голосов
/ 28 января 2020

Попробуйте явно экспортировать setalloccol из data.table перед запуском вашего кода:

setalloccol = data.table::setalloccol
# further calculations
# cro(df$var1, df$var2)
1 голос
/ 28 января 2020

Благодаря rferrisx для потока от GitHub . Сообщение от jos ie -athens от 3 ноября 19, кажется, решает эту проблему, хотя я не запускал R с Bash. Таким образом, мой процесс был:

  1. Удаление expss и data.table пакетов: remove.packages(c('expss','data.table'))
  2. Переустановите вышеуказанные пакеты: install.packages(c('data.table','expss'))

This кажется, чтобы обойти ошибку. Не совсем понятно, почему, но, надеюсь, полезно, если кто-то испытывает то же самое.

1 голос
/ 28 января 2020

Setalloccol - это экспериментальная команда в data.table, используемая для выделения памяти по ссылке, чтобы гарантировать, что что-то более стабильное, чем мелкая копия, выделяется с помощью ': ='. «Expss» выглядит как библиотека монстров. Я не буду загружать его сейчас и выследить вашу ошибку. Но поскольку setalloccol - экспериментальная команда, вы должны найти разработчиков expss и сообщить о дефекте. Однако здесь уже есть полный отчет об ошибке по этому конкретному вопросу: https://github.com/gdemin/expss/issues/42. Разработчик data.table ("Matt Dowle") комментирует это сообщение об ошибке. На практике setalloccol работает следующим образом:

help(setalloccol)

data.table::truelength(HMR)
[1] 1035
options(datatable.verbose=TRUE)
data.table::setalloccol(HMR,2 * 1035)
data.table::truelength(HMR)
[1] 2081

Но в действительности это не требуется для большинства вычислений в формате data.table. Попробуйте добавить код "expss" и выяснить, почему и когда они его используют. Извините, я не более полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...