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

向Shiny应用上传CSV文件报错:高分辨率熔解分析数据问题

问题分析与解决方案

错误1:xy.coords: 'x' and 'y' lengths differ

根源

你当前的CSV格式是行结构(第一行全为温度值,第二行全为对应信号值),但这款Shiny应用的读取逻辑是按read.csv/read.csv2的默认规则处理——即第一行为列名,后续每一行是一组温度-信号配对数据。

看应用核心代码:

if (grepl(";", L)) vals$df <- read.csv2(input$hmr$datapath) else vals$df <- read.csv(input$hmr$datapath)

read.csv会把你的两行数据解析成2行N列的数据框(N是你的温度点数量),而应用后续分析需要的是N行2列(一列温度、一列信号)的结构,这直接导致x/y长度不匹配的错误。

修正方法

把你的数据转置为列结构:

  • 在Excel中,选中所有温度和信号数据,右键选择「复制」
  • 右键点击空白单元格,选择「选择性粘贴」→勾选「转置」
  • 给第一列命名为Temperature,第二列命名为任意信号列名(比如Fluorescence)
  • 重新导出为CSV UTF-8格式(确保小数分隔符为点号)

转置后的数据结构应和你提供的R代码示例一致:

df1 <- data.frame(Temperature = c(71.85, 71.79, 71.82, 71.79, 71.82, 71.79, 71.79, 71.82, 71.82), 
                  Fluorescence = c(5.62, 5.68, 5.58, 5.57, 5.55, 5.55, 5.54, 5.51,5.52))

错误2:smooth.spline: need at least four unique 'x' values

根源

smooth.spline函数要求输入的x值至少有4个独特值才能进行曲线拟合。你上传的前10组数据中,温度值重复度极高(比如示例里只有71.79、71.82、71.85三个独特值),无法满足函数的最低要求。

修正方法

  • 确保上传的数据集包含至少4个不同的温度值
  • 若原始实验数据确实温度重复多,可通过线性插值补充少量独特温度点,或者直接上传包含更多温度梯度的完整数据集

额外验证步骤

转置后可以先在本地R环境验证读取是否正确:

# 读取修正后的CSV
test_df <- read.csv("你的修正后文件路径.csv")
# 检查结构:应为N行2列,无NA
str(test_df)
# 检查独特温度值数量
length(unique(test_df$Temperature))

内容的提问来源于stack exchange,提问作者Zoë dK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:35:21