R - Ошибка в `: =` (переменная, as.character (переменная)) - PullRequest
1 голос
/ 19 октября 2019

Я пытаюсь запустить скрипт R, который можно найти здесь с помощью команды plot_trace.R -m ./log.model.csv ./log.trace.csv.

Два файла CSV можно найти здесь .

Это приводит к ошибке:

Error in `:=`(variable, as.character(variable)) : 
  Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j, once only and in particular ways. See help(":=").
Calls: [ -> [.tbl_df -> check_names_df -> :=

Последний, но не менее важный вывод: sessionInfo ():

R version 3.4.4 (2018-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.3 LTS

Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.4.4

Спасибо

Ответы [ 2 ]

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

ОБНОВЛЕНИЕ

Я обнаружил две проблемы с этим сценарием:

  • Автор смешивает функции из tidyr и переменные класса data.table. Эти функции, вероятно, будут возвращать фреймы данных, и использование синтаксиса data.table для них приведет к ошибкам. К сожалению, некоторые функции tidyr могут возвращать data.table при работе с одной из них, но, похоже, это сильно зависит от версии пакета tidyr.

  • unnestФункция от tidyr имеет новый интерфейс. Скрипт не будет работать как с tidyr версии 1.0.0 или новее.

Ниже приведены строки, которые я изменил, чтобы исправить скрипт, используя R версии 3.6.1 и tidyr версия 1.0.0:

  • строка 56: добавлено trace.df <- as.data.table(trace.df)
  • строка 64: изменено на trace.df <- unnest(trace.df, cols)
  • строка 65: добавлено trace.df <- as.data.table(trace.df)

Оригинальный ответ

Мне удалось запустить скрипт наданные вы предоставили без ошибок. Оба

Rscript --vanilla plot_trace.R -m ./log.model.csv ./log.trace.csv

и

chmod +x plot_trace.R
./plot_trace.R -m ./log.model.csv ./log.trace.csv

дали следующий график:

Result plot

Можете ли вы запуститьпошаговый скрипт в RStudio для проверки класса trace.df после каждого шага?

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

Похоже, что вызов unnest создает что-то, что не является таблицей данных.

В строке 56 попробуйте добавить:

trace.df <- as.data.table(trace.df)
...