R блестящее приложение работает локально, но после развертывания я получаю сообщение об ошибке, по-моему, data.table: объект CcopyNamedInList не найден - PullRequest
0 голосов
/ 24 октября 2019

К сожалению, мой код не доступен для совместного использования, поскольку он предназначен для проекта компании, но я полностью потерян с этой ошибкой. Я удалил и переустановил data.table и до сих пор не исправить. Странно то, что я думаю, что эта ошибка также будет происходить локально, но это не так! data.table отлично работает локальноЯ хотел бы иметь воспроизводимый пример, но я не могу понять один, потому что он работает локально!

РЕДАКТИРОВАТЬ: Хорошо, я думаю, что происходит следующее

###Coerce to factors for clean 2x2's.
a_tab <- factor(data_fin$a_result_final,levels = c("Positive","Negative")) 
t_tab <- factor(data_fin$t_result_final,levels = c("Positive","Negative"))
p_tab <- factor(data_fin$p_result_final,levels = c("Positive","Negative"))

tdf <- data.frame(a_tab,c_tab,p_tab)

#Create contingency tables
table <- table(tdf$a_tab,tdf$c_tab,dnn = c("Test 1","Test 2")) %>%
  addmargins(margin = c(1,2),FUN = sum)
print('made B Table')
table_2 <- table(tdf$a_tab,tdf$c_tab,dnn = c("Test 1","Test 3")) %>%
  addmargins(margin = c(1,2),FUN = sum)
print('made C Table')

Warning:Error: object 'CcopyNamedInList' not found

Iне может поделиться данными, но факторы поступают из фрейма данных, содержащего несколько записей данных по линиям «Положительный», «Отрицательный» и «Недействительный». Надеюсь, это соответствует лучшим стандартам вопросов.

РЕДАКТИРОВАТЬ: Хорошо, поэтому я перезапускаю R и запускаю инструкции, которые вы перечислили `

test.data.table()
getDTthreads(verbose=TRUE):
  omp_get_num_procs()            4
  R_DATATABLE_NUM_PROCS_PERCENT  unset (default 50)
  R_DATATABLE_NUM_THREADS        unset
  omp_get_thread_limit()         2147483647
  omp_get_max_threads()          4
  OMP_THREAD_LIMIT               unset
  OMP_NUM_THREADS                unset
  RestoreAfterFork               true
  data.table is using 2 threads. See ?setDTthreads.
test.data.table() running: C:/Users/jkramp/Documents/R/win-library/3.6/data.table/tests/tests.Rraw.bz2 
Running test id 2120.08        
10 longest running tests took 56s (33% of 168s)
      ID time nTest
 1: 1438 8.58   738
 2: 1835 8.38     1
 3: 1648 6.17    91
 4: 1652 5.74    91
 5: 1650 5.71    91
 6: 1223 5.39   728
 7: 1848 4.39     1
 8: 1644 4.30    91
 9: 1642 4.19    91
10: 1646 4.12    91
endian==little, sizeof(long double)==16, sizeof(pointer)==8, TZ=America/Los_Angeles, locale='LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252', l10n_info()='MBCS=FALSE; UTF-8=FALSE; Latin-1=TRUE; codepage=1252', getDTthreads()='omp_get_num_procs()==4; R_DATATABLE_NUM_PROCS_PERCENT==unset (default 50); R_DATATABLE_NUM_THREADS==unset; omp_get_thread_limit()==2147483647; omp_get_max_threads()==4; OMP_THREAD_LIMIT==unset; OMP_NUM_THREADS==unset; RestoreAfterFork==true; data.table is using 2 threads. See ?setDTthreads.'

All 9643 tests in tests/tests.Rraw.bz2 completed ok in 00:02:48 elapsed (00:01:50 cpu) on Fri Oct 25 14:22:24 2019

install.packages('expss')
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/jkramp/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/expss_0.9.1.zip'
Content type 'application/zip' length 1867278 bytes (1.8 MB)
downloaded 1.8 MB

package ‘expss’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\jkramp\AppData\Local\Temp\Rtmpy49ttd\downloaded_packages

Кажется, все установлено нормально. Я также переустановил expss. Я получаю предупреждение о Rtools, но я думаю, что это может быть отдельной проблемой? Вот прямой вывод из моих блестящих журналов:

2019-10-25T21:44:01.961646+00:00 shinyapps[929961]: Warning: Error in data.table: object 'CcopyNamedInList' not found
2019-10-25T21:44:01.966388+00:00 shinyapps[929961]:   67: lapply
2019-10-25T21:44:01.966383+00:00 shinyapps[929961]:   75: data.table
2019-10-25T21:44:01.966388+00:00 shinyapps[929961]:   66: multi_cro
2019-10-25T21:44:01.966384+00:00 shinyapps[929961]:   74: make_datatable_for_cro
2019-10-25T21:44:01.966389+00:00 shinyapps[929961]:   65: cro
2019-10-25T21:44:01.966385+00:00 shinyapps[929961]:   73: elementary_cro
2019-10-25T21:44:01.966386+00:00 shinyapps[929961]:   72: FUN
2019-10-25T21:44:01.966386+00:00 shinyapps[929961]:   71: lapply
2019-10-25T21:44:01.966640+00:00 shinyapps[929961]: Error in data.table(cell_var, col_var, weight) : 
2019-10-25T21:44:01.966641+00:00 shinyapps[929961]:   object 'CcopyNamedInList' not found
2019-10-25T21:44:01.966391+00:00 shinyapps[929961]:   61: server [/srv/connect/apps/1143_r_dashboard/app.R#192]
2019-10-25T21:44:01.966389+00:00 shinyapps[929961]:   64: as.etable.table

Приложение, кажется, падает в середине использования expss, но говорит, что это проблема data.table. установка и обновление expss, похоже, не решают мою проблему на глянце, но опять же он работает локально.

Ответы [ 2 ]

3 голосов
/ 25 октября 2019

Пожалуйста, изучите этот раздел Руководства по установке: https://github.com/Rdatatable/data.table/wiki/Installation#windows.

Содержит:

В Windows при обновлении любого пакета, использующего скомпилированный код, представляется важнымзакройте все сеансы R перед обновлением. Это освобождает все блокировки Windows для DLL. Чтобы быть уверенным, перезагрузите тоже. Затем откройте новый свежий R сеанс. У некоторых пользователей есть файл .Rprofile, который автоматически загружает data.table при каждом запуске R-сеансов. Вероятно, у вас нет файла .Rprofile, но если он есть, и он загружает все пакеты (которые сами могут загрузить data.table), либо временно переименуйте .Rprofile, либо передайте --vanilla при запуске R, чтобы предотвратить запуск .Rprofile. После того, как вы запустили один свежий сеанс R без data.table, перейдите к установке.

Чтобы проверить установку
require(data.table)
test.data.table()
Если test.data.table() завершится неудачно, вы знаете,установка не работает должным образом. Типичные проблемы в Windows - отсутствие функций или несоответствие параметров. Эти проблемы могут привести к сбою. Перезагрузите компьютер с Windows, чтобы очистить все блокировки DLL и заново установите .zip. test.data.table() - это надежный способ проверить вашу установку. Полный набор из более чем 5000 тестов выполняется локально на вашем компьютере и не должен занимать более 2 минут.

Где «Типичные проблемы в Windows, связанные с отсутствием функций или несовпадением параметров» находятся в той же области, что иошибка, которую вы видели: Error: object 'CcopyNamedInList' not found

Также см. примечание 1 к v1.12.0 от января 2019 года:

Когда загружается data.table, он теперь проверяет свою версию DLL на соответствиеверсия его кода уровня R. Это необходимо для обнаружения проблем установки в Windows, когда i) библиотека DLL используется другим сеансом R и ii) исходная версия CRAN> двоичный двоичный файл CRAN, который происходит сразу после нового выпуска (R предлагает пользователям выполнить установку из исходного кода до двоичного файла CRANдоступен). Эта ситуация может привести к состоянию, когда новый R-код пакета вызывает старый C-код в старой DLL;R # 17478, # 3056. Это нарушенное состояние может сохраняться до тех пор, пока, мы надеемся, не возникнет странная ошибка, вызванная несоответствием. В противном случае неверные результаты могут возникнуть молча. Эта ситуация применима к любому пакету R с скомпилированным кодом, а не только data.table, он предназначен только для Windows и существует давно. Это было понято только недавно, поскольку обычно это происходит только в течение нескольких дней после каждого нового выпуска, пока двоичные файлы не будут доступны в CRAN.

Поэтому я приложил все усилия, чтобы обнаруживать подобные проблемы в Windows. Насколько мне известно, data.table - единственный пакет в CRAN, который проверяет себя сам. Он проверяет себя при загрузке. Все, что я могу думать, это то, что когда вы пишете, что он не работает на сервере, вы имеете в виду, что у вас есть R-сессия, которая была открыта в течение многих дней или недель, и вы не перезапустили ее. Это единственный способ, которым я могу предположить, что это может избежать проверки соответствия версии R / dll.

Когда вы исследуете эту проблему, вы можете дать мне как можно больше подробностей, пожалуйста, когда вы обновлялись, как именно вы обновлялись(из исходного кода или из двоичного кода) и т. д. Я предполагаю, что вы работаете в Windows, потому что это основная платформа, где подобные проблемы возникают из-за блокировки DLL. Пожалуйста, всегда включайте sessionInfo() в отчетах.

0 голосов
/ 28 октября 2019

Кажется, это ошибка пакета expss при развертывании на глянце. Блестящая поддержка работает, чтобы найти ответ, но я закончил тем, что переписал некоторые куски своего кода, чтобы заменить expss альтернативными функциями из блестящего пакета и базы R для решения проблемы. Спасибо всем за ваш вклад, но я не могу больше тратить время на изучение проблемы, потому что у меня есть крайний срок. Думаю, мне придется составить таблицы сопряженности для загрузок Excel другим способом.

...