You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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要求的两列矩阵格式,就会直接触发索引报错。
修复方案

两种修改方式二选一即可:

  1. 保留当前直接调用vectorMulti的写法,给响应式变量增加非空校验,避免初始为空的情况:
rates <- function(){
  req(ratesInput())
  vectorVariable(ratesInput())
}
  1. 去掉vectorVariable中多余的curveCorrect调用,和vectorMultiFinal的内部逻辑对齐:
vectorVariable <- function(y){vectorMulti(periods(), y)}

内容的提问来源于stack exchange,提问作者Curious Jorge - user9788072

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:48:05