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

使用pivot_longer转换数据格式时遇类型错误求助

问题原因及解决方案

错误原因

pivot_longer是tidyverse工具集里的函数,只能处理**数据框(data frame/tibble)类型的对象,而你通过sapply生成的u是矩阵(matrix)**类型,所以会抛出"no applicable method"的错误。

修正后的代码

library(tidyverse)

n= 8

dm<- 300/1000 # 最大直径(mm)
am<- (dm^2*pi)/4 # 对应最大面积(m²)
qm<- 800/3600 # 最大流量(m³/h)

i<- am/n
ii<- qm/(am/i)

A<- seq(from = (0+i), to = am, by = i)
Q<- seq(from = (0+ii),to = qm, by = ii)

u<- sapply(Q,'/',A)
colnames(u) = A
rownames(u) = Q

# 先把矩阵转为带行名的tibble,再做宽转长
u %>%
  as_tibble(rownames = "Flow Rate (m^3/h)") %>%
  pivot_longer(
    cols = -`Flow Rate (m^3/h)`, # 选中除流量列外的所有列
    names_to = "Area (m^2)",
    values_to = "Velocity (m/s)" # u是Q/A,对应流速,可按需修改名称
  )

关键修正点

  1. 用as_tibble(rownames = ...)把矩阵转为tibble,同时把原矩阵的行名(流量值)转为单独一列,避免丢失信息
  2. pivot_longer的cols参数指定为-排除流量列,自动选中所有面积列,不需要手动写c(u[1:8])这种错误写法

内容的提问来源于stack exchange,提问作者Joe Bennet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:52:19