initFields(scales = scales)函数出错:找不到"initRefFields"函数。

3

我的代码中有一个ggplot2绘图函数。当该文件作为R代码进行源代码时,该函数可以正常运行。但是当我将此函数包含在R包中(当然也要在包的DESCRIPTION和NAMESPACE文件中都包含ggplot2和scales)时,我遇到了以下错误:

Error in initFields(scales = scales) : 
  could not find function "initRefFields"

ggplot2对象中分别调用刻度的代码如下:

+ facet_wrap(~PV_Type, ncol = 1, scales = "free") +

我运行的是最新版本的R语言 (3.2.0)和最新版本的ggplot2 (1.0.1),它们都是从源代码安装的。

如果有可能的话,希望能提供一个解决方案或解释!

编辑:执行sessionInfo()命令的输出如下:

R version 3.2.0 (2015-04-16)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.10.3 (Yosemite)

locale:
[1] C/UTF-8/C/C/C/C

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

other attached packages:
[1] argparse_1.0.1 proto_0.3-10   greater_1.0

loaded via a namespace (and not attached):
 [1] Rcpp_0.11.6        DEoptimR_1.0-2     RColorBrewer_1.1-2 plyr_1.8.2
 [5] methods_3.2.0      class_7.3-12       prabclus_2.2-6     tools_3.2.0
 [9] digest_0.6.8       mclust_5.0.1       gtable_0.1.2       lattice_0.20-31
[13] mvtnorm_1.0-2      findpython_1.0.1   gridExtra_0.9.1    trimcluster_0.1-2
[17] stringr_1.0.0      cluster_2.0.1      RGraphics_2.0-12   fpc_2.1-9
[21] stats4_3.2.0       diptest_0.75-6     grid_3.2.0         nnet_7.3-9 
[25] getopt_1.20.0      robustbase_0.92-3  flexmix_2.3-13     pander_0.5.1
[29] ggplot2_1.0.1      reshape2_1.4.1     kernlab_0.9-20     magrittr_1.5
[33] scales_0.2.4       modeltools_0.2-21  MASS_7.3-40        colorspace_1.2-6
[37] stringi_0.4-1      munsell_0.4.2      rjson_0.2.15

.libPaths() 在我的安装中也非常常见:

>.libPaths()
[1] "/Library/Frameworks/R.framework/Versions/3.2/Resources/library"

或许我还应该补充一下,我是从一个命令行的R脚本中调用需要scales包的函数。

(这不是ggplot2 Error in initFields 的重复问题,因为我尝试了他们所有的建议(当然除了回退到R 2.14),但都没有奏效。)


2
你的sessionInfo()输出在哪里?可能应该也发布.libPaths()。并且你应该在这些文件中包含你实际使用这些软件包的内容。 - IRTFM
感谢您的评论,我认为它们都相当常见,所以我没有在原始问题中包含它们。现在我已经编辑并附加了这些信息。 - Costas B.
在您的评论的第二部分中,我有一个函数,它以数据框作为输入并生成一个ggplot(相当复杂,因此我将其包装在函数中)。我需要使用'free'轴边界来进行比例尺。该函数由命令行R脚本调用(使用shebang行中的Rscript)。当我在脚本中导入我的R函数代码时,一切正常。但是,当我生成一个包含我的R函数代码的R软件包(在生成所需文件和R CMD检查它们之后)并且在我的脚本中导入此R软件包(称为greater_1.0)时,我遇到了上述错误。 - Costas B.
1个回答

3

我认为我已经找到了一个解决方案/解决办法。

sessionInfo()中我注意到methods包没有被附加,而是在名称空间中加载。因此,在附加methods(以及随后需要的grid函数)之后,我的脚本可以很好地从包中加载函数。

现在我的工作sessionInfo()看起来像这样:

R version 3.2.0 (2015-04-16)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.10.3 (Yosemite)

locale:
[1] C/UTF-8/C/C/C/C

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

other attached packages:
[1] argparse_1.0.1 proto_0.3-10   greater_1.0

loaded via a namespace (and not attached):
 [1] Rcpp_0.11.6        DEoptimR_1.0-2     RColorBrewer_1.1-2 plyr_1.8.2
 [5] class_7.3-12       prabclus_2.2-6     tools_3.2.0        digest_0.6.8
 [9] mclust_5.0.1       gtable_0.1.2       lattice_0.20-31    mvtnorm_1.0-2
[13] findpython_1.0.1   gridExtra_0.9.1    trimcluster_0.1-2  stringr_1.0.0
[17] cluster_2.0.1      RGraphics_2.0-12   fpc_2.1-9          stats4_3.2.0
[21] diptest_0.75-6     nnet_7.3-9         getopt_1.20.0      robustbase_0.92-3
[25] flexmix_2.3-13     pander_0.5.1       ggplot2_1.0.1      reshape2_1.4.1
[29] kernlab_0.9-20     magrittr_1.5       scales_0.2.4       modeltools_0.2-21
[33] MASS_7.3-40        colorspace_1.2-6   stringi_0.4-1      munsell_0.4.2
[37] rjson_0.2.15

感谢您的贡献,但我希望您能解释一下为什么需要在加载函数时显式地附加这两个包(methodsgrid),而在使用source()加载函数时则不需要。请注意不要删除html标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接