如何在drake中为对象分配字符串?赋值时文件缺失警告求解
解决drake脚本中参数化字符串触发文件不存在警告的问题
这个警告的根源其实是drake的默认行为:它会把未特殊标记的字符串当作文件路径解析,而不是普通的字符值。当你写commencement = "dec2017"时,drake误以为你要引用一个名为dec2017的输入文件,找不到就会抛出警告;虽然它最后还是把这个字符串本身存成了输出对象,但这个误判会干扰后续的路径操作。
这里有两种简单的解决方法,都能让drake正确识别这是一个普通字符参数:
方法1:用I()包裹字符串(最简洁)
I()是R里的"抑制解析"函数,告诉drake不要把这个字符串当成文件路径处理:
plan <- drake_plan( commencement = I("dec2017") ) make(plan)
方法2:用target()明确指定存储格式(更灵活)
如果后续需要存储更复杂的参数(比如列表、数据框),可以用target()函数显式定义存储格式,避免文件路径误判:
plan <- drake_plan( commencement = target( "dec2017", format = "rds" # 用rds格式存储值,而非引用文件 ) ) make(plan)
运行任意一种方法后,再执行loadd('commencement')依然能正常拿到"dec2017",而且不会再出现文件不存在的警告,后续用这个参数拼接文件路径也能正常工作。
内容的提问来源于stack exchange,提问作者Dambo
相关产品推荐
相关产品推荐

