只要我没有完美地编写sqldf查询,R就会崩溃

Rou*_*mar 0 r sqldf anaconda ubuntu-16.04

sessionInfo()

R版本3.4.1(2017-06-30)平台:x86_64-pc-linux-gnu(64位)运行于:Ubuntu 16.04.3 LTS

Matrix产品:默认BLAS:/home/roughmar/anaconda3/lib/R/lib/libRblas.so LAPACK:/home/roughmar/anaconda3/lib/R/lib/libRlapack.so

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

附加基础包:[1] stats graphics grDevices utils
数据集方法库

通过命名空间加载(而不是附加):[1] compiler_3.4.1 R6_2.2.1 magrittr_1.5 IRdisplay_0.4.4 [5] pbdZMQ_0.2-6
tools_3.4.1 crayon_1.3.2 uuid_0.1-2 [9] stringi_1.1.5
IRkernel_0.7.1 jsonlite_1.5 stringr_1.2.0 [13] digest_0.6.12
repr_0.10 evaluate_0.10

每当我加载sqldf库时,我都会遇到:

加载所需的包:gsubfn

加载所需的包:proto

无法加载tcltk.将使用较慢的R代码.

加载所需的包:RSQLite

我编写的任何sqldf查询运行完美,结果如预期.当我在表达式上犯错误时,问题就会出现,例如额外的逗号,或者误导变量,或者你可能会想到通常会输出错误的任何内容.

我没有收到错误 - 它只是崩溃了.在Rstudio和jupyter上都进行了测试 - 内核就死了,需要重新启动.经过一段时间后,它变得很累,因为我需要每次都重新加载所有变量.

我知道这很模糊,但我愿意提供可能需要的任何信息.

提前致谢!

Dir*_*tel 6

我猜想这是在Anaconda,或者更普遍的是混合Conda和普通R.

在我的系统---标准Ubuntu(17.04)R(3.4.2)二进制文件通过CRAN镜像与标准sqldf ---这一切都很好:

R> a1r <- head(warpbreaks)     ## initial `help(sqdf)` example
R> a1s <- sqldf("select * from warpbreaks limit 6")
R> identical(a1r, a1s)
[1] TRUE
R> sqldf("selectFOO * from warpbreaks limit 6 BAR")   # no termination on error
Error in rsqlite_send_query(conn@ptr, statement) : 
  near "selectFOO": syntax error
R> 
R> sqldf("select * from warpbreaks limit 2")
  breaks wool tension
1     26    A       L
2     30    A       L
R> 
Run Code Online (Sandbox Code Playgroud)

当工具链被破坏时,二进制文件可能不兼容.

我建议在本地重建所涉及的软件包及其依赖项.因此,至少RSQLite和DBI,问题当然是这些包含了大量的其他软件包.

您也可以考虑在Docker中运行.

或者,像我(和其他人一样)做:不要让康达靠近你的R堆.