问题描述
我有一个正在使用的手动创建的调色板。我已经将.rds
调色板文件包含在包文件夹中,并在load(paste0(getwd(),'/my_palette.rds'))
的函数中引用了它。但是,例如,如果我想共享我的软件包,并且有人要更改他的工作目录,则我认为这是不切实际的,那么该引用将不起作用。我正在寻找一种解决方案,可以在安装软件包时在R中自动构建此调色板,这样我就不必在要引用的软件包文件夹中有确切的文件。这可能吗?
编辑
x<-load(paste0(getwd(),'/my_palette.rds'))
usethis::usedata(x)
然后,我在data /文件夹中单击此.rda
以将其加载到我的工作目录中。但是我不知道该怎么称呼它。 load('x')
不起作用。
EDIT第2卷
我将介绍将my_palette.rds
添加到要应用的程序包中的完整算法:
- 创建手动调色板
- 通过命令
x<-load(dir/my_palette.rds)
引用它 - 然后我使用命令
usethis::use_data(x)
(然后使用其中的.rda文件创建数据/文件夹) - 之后,我将
ggplot2
函数与scale_fill_manual(my_package::x)
一起使用。我得到的警告是:Error: UnkNown colour name: my_palette
EDIT第3卷
我想描述创建调色板的过程,以便我们可以看到错误的根源。因此,您所做的工作与我所做的工作之间的主要区别在于,您创建了调色板,将其作为颜色的向量以供将来参考。
(这非常重要,您的调色板以矢量类型存储)。我要做的是创建创建调色板的函数,然后将其保存到.rds
文件中。我相信这可能是我的调色板存储在文件中的主要区别。您认为这有很大的不同吗?还是可以省略它?
解决方法
在R包中保存数据的过程在这里有很好的描述:https://github.com/life4/textdistance
您可能更喜欢使用内部数据方法,除非您希望软件包的其他用户可以访问调色板。
通过usethis::use_data()
,可以将全局环境中的对象添加到数据文件夹,如果设置了R/sysdata.rda
,则将对象添加到internal = TRUE
。加载软件包时(例如devtools::load_all()
),这些数据对象会加载到软件包环境中。
您提到的错误-Error: Unknown colour name: my_palette
-表示您生成调色板的方式存在问题。提供生成您的调色板进行检查的代码将很有帮助。
一个例子:
# define color palette
color_palette <- c("#c6d4e1","#2f2016","#fcfaea","#456789")
# save to internal package data - saves data in R/sysdata.rda
usethis::use_data(color_palette,internal = TRUE)
# load package
devtools::load_all()
# refer to color palette
mypackage::color_palette[1] # "#c6d4e"