ls(envir = envir, all.names = private) 中的错误:R 中的“envir”参数无效

Posted

技术标签:

【中文标题】ls(envir = envir, all.names = private) 中的错误:R 中的“envir”参数无效【英文标题】:Error in ls(envir = envir, all.names = private) : invalid 'envir' argument in R 【发布时间】:2015-05-18 17:57:37 【问题描述】:

我在 R 中使用包加载数据时遇到了这个错误,在这个包中,使用了 pakcage rJava

每次我运行一个函数,错误都是

Error in ls(envir = envir, all.names = private) : 
  invalid 'envir' argument

这个包已经被证明没有任何问题,只是我电脑的一些环境问题。

我调试的时候发现在之前的最后一个进程中 ls(envir=envir,all.names = private ) 变量envirNULL,我认为应该是一些值但不是NULL。

经过一些试验,我通过每次安装rJava 解决了这个问题。此外,只有当错误出现时,我安装'rJava',它才会起作用。如果我第一次安装,它将无法正常工作。所以,我猜,安装 'rJava'(或者可能安装包)会导致一些环境变量发生变化。

Java 7 和 Java 8,包括 jdk 或 jre 都经过测试,都不起作用。而对于 R,我使用的是 3.1.3 R,所有的包都是最新的。

以下是一些我认为可能对故障排除有用的信息。

通过安装包,jvm.dll needs to be added to the windows environment path: "Path" 我做到了。

我的 sessionInfo 如下图所示:

R version 3.1.3 (2015-03-09)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=Danish_Denmark.1252  LC_CTYPE=Danish_Denmark.1252    LC_MONETARY=Danish_Denmark.1252 LC_NUMERIC=C                   
[5] LC_TIME=Danish_Denmark.1252    

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

other attached packages:
 [1] rgdal_0.9-1            fields_8.2-1           spam_1.0-1             raster_2.3-33          sp_1.0-17              ecomsUDG.Raccess_2.2-6
 [7] downscaleR_0.5-2       maps_2.3-9             downscaleR.java_0.0-2  rJava_0.9-6            gWidgetsRGtk2_0.0-83   cairoDevice_2.22      
[13] RGtk2_2.20.31          gWidgets_0.0-54        R.utils_2.0.0          R.oo_1.19.0            R.methodsS3_1.7.0     

loaded via a namespace (and not attached):
 [1] abind_1.4-3       bitops_1.0-6      boot_1.3-15       CircStats_0.2-4   colorspace_1.2-6  dtw_1.17-1        lattice_0.20-30   MASS_7.3-39      
 [9] munsell_0.4.2     plyr_1.8.1        proxy_0.4-14      Rcpp_0.11.5       RCurl_1.95-4.5    scales_0.2.4      tools_3.1.3       verification_1.41

感谢您提供的任何帮助。

【问题讨论】:

环境变量是一个操作系统概念,它们可以在R中通过Sys.getenvSys.setenv访问。它们基本上是变量名称到值的映射,例如JAVA_HOME = C:\Program Files\Java\jre6。另一方面,R 环境 就像将名称映射到任何 R 对象的列表。请参阅:adv-r.had.co.nz/Environments.htmlls() 返回由 envir 参数指定的 R 环境中所有名称的向量。打电话给ls(envir=NULL) 是没有意义的,因此你的错误。 @logworthy 谢谢,但不是我打来的……它在包里……问题不在于调用ls(),而是找不到有效的@ 987654337@.... 您应该添加更多调试信息。阅读 R 中的调试,例如在运行代码之前使用 options(error=recover) 以便获得堆栈跟踪。 【参考方案1】:

你的问题完全解决了吗?前几天我也遇到了类似的问题,整理了一下,想和大家分享一下。实际上,那些包装函数(在我的例子中是 Rbbg 包)调用 rJava 函数在 C 驱动器下的用户文件夹中有一个日志文件,您可以删除这些日志文件,因为它可以让您摆脱错误消息。

就我而言,我需要删除 Rbbg 包创建的 blpjavaapi0.log.0 和 org.findata.blpwrapper.0 文件。

【讨论】:

非常感谢,很遗憾,我不再从事这个项目了。不过我会通知负责人,让他试试~

以上是关于ls(envir = envir, all.names = private) 中的错误:R 中的“envir”参数无效的主要内容,如果未能解决你的问题,请参考以下文章

envir mensaje a amigos Facebook发送

eval 中的错误(expr,envir,enclos):没有用于 break/next 的循环,跳转到顶层

不应该 envir = parent.env(environment() 保护我的函数不被修改,尽管在全球环境中发生了啥?

idea 14运行java工程报错-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME envir

pid

验证R中函数内的对象存在[重复]