我正在尝试运行R脚本,可以使用以下命令在here中找到该脚本
plot_trace.R -m ./log.model.csv ./log.trace.csv
。
可以找到两个here的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
谢谢
答案 0 :(得分:3)
更新
我发现此脚本有两个问题:
作者将tidyr
中的函数与类data.table
的变量混合在一起。这些函数可能会返回数据帧,并且在这些函数上使用data.table
语法会导致错误。不幸的是,某些tidyr
函数在进行操作时可能会返回data.table
,但这似乎因tidyr
软件包的版本而有很大差异。
unnest
中的tidyr
函数具有新的界面。该脚本无法与tidyr
1.0.0或更高版本一起使用。
下面是我使用R版本3.6.1和tidyr
版本1.0.0更改以修复脚本的行:
trace.df <- as.data.table(trace.df)
trace.df <- unnest(trace.df, cols)
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
产生了以下情节:
您可以在RStudio中逐步运行脚本来检查trace.df
的类吗?
答案 1 :(得分:0)
看起来unnest
调用正在创建不是数据表的内容。
在第56行尝试添加:
trace.df <- as.data.table(trace.df)