R Shiny中删除无用自定义函数后运行报错原因咨询
报错原因分析
核心问题是两点逻辑冲突共同导致的:
- 你对
vectorMultiFinal的功能认知存在偏差:当前代码里的vectorMultiFinal并不是透传参数的空壳,它的内部会对传入的第二个参数额外执行一次curveCorrect校验处理。 - 原来的
vectorVariable写法对输入重复做了两次curveCorrect校验:你调用vectorMultiFinal时已经提前对y做了一次curveCorrect,加上vectorMultiFinal内部的第二次调用,刚好可以兼容App初始加载时ratesInput为空的异常状态——动态UIratesInput是由renderUI生成的,App刚启动时还没完成渲染,ratesInput()返回NULL,第一次curveCorrect处理NULL返回的异常结构,经过第二次curveCorrect处理后刚好符合vectorMulti的入参要求,不会触发报错。 - 改为直接调用
vectorMulti后,仅对输入做了一次curveCorrect处理,NULL经过单次处理后返回的结构不符合vectorMulti要求的两列矩阵格式,就会直接触发索引报错。
修复方案
两种修改方式二选一即可:
- 保留当前直接调用
vectorMulti的写法,给响应式变量增加非空校验,避免初始为空的情况:
rates <- function(){ req(ratesInput()) vectorVariable(ratesInput()) }
- 去掉
vectorVariable中多余的curveCorrect调用,和vectorMultiFinal的内部逻辑对齐:
vectorVariable <- function(y){vectorMulti(periods(), y)}
内容的提问来源于stack exchange,提问作者Curious Jorge - user9788072
相关产品推荐
相关产品推荐

