在R中用未定义变量保存计算,source调用出错如何解决?
问题解决:source脚本时出现“Object 'a' not found”错误
错误原因
你当前的写法会让R在source脚本时立即执行计算,但此时你的工作环境中还没有定义a、b、c、d、e、f这些变量,所以触发“找不到对象”的错误。而Apollo需要的是效用函数的表达式结构,不是提前计算好的数值结果。
解决办法
不需要提前计算结果,而是把效用函数的表达式以未求值的形式保存,让Apollo在运行时自行解析计算:
方法1:用quote()保留表达式结构
修改脚本中的代码为:
calculation = quote( a*b + c*d + e*f )
quote()会保留表达式的原始结构,不会立即求值,Apollo运行时会在包含数据变量的环境中解析这个表达式。
方法2:保存为字符串形式(部分Apollo场景支持)
如果Apollo接受字符串格式的效用函数,也可以写成:
calculation = "a*b + c*d + e*f"
这种写法同样不会在source时触发计算,Apollo会自动解析字符串中的表达式。
内容的提问来源于stack exchange,提问作者Victor Nielsen
相关产品推荐
相关产品推荐

