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

如何基于温度列表条件,对换热系数列表应用指定函数生成新列表?

实现对应元素的条件式计算方法

需求说明

我们有两个大型列表(各包含10+元素,以数据框形式存储):

  • list1:存储温度数据
  • list2:存储换热系数数据

需要对list2的每个元素执行公式计算:(x*0.6/k),其中k值由list1对应位置的温度X按以下条件确定:

  • 当 0 < X ≤ 20 时,k = 0.02514
  • 当 100 < X ≤ 200 时,k = 0.03095
  • 当 700 < X ≤ 800 时,k = 0.07037

实现方案(R语言)

以下提供两种实现方式,分别基于tidyverse工具包和基础R函数,均可处理大型数据集:

方法1:使用tidyverse工具包(推荐,代码可读性高)

# 加载依赖包
library(dplyr)
library(purrr)

# 示例数据
list1_element1 <- data.frame("0" = c(20, 150, 120),
                             "10" = c(20, 800, 120)) 

list2_element2 <- data.frame("0" = c(8, 10, 6),
                             "10" = c(10, 9, 8)) 

# 定义计算函数
calc_value <- function(x_temp, x_h) {
  k <- case_when(
    x_temp > 0 & x_temp <= 20 ~ 0.02514,
    x_temp > 100 & x_temp <= 200 ~ 0.03095,
    x_temp > 700 & x_temp <= 800 ~ 0.07037
    # 若需处理其他温度区间,可在此补充条件或默认值
  )
  round(x_h * 0.6 / k, 2)
}

# 对两个数据框的对应元素逐列、逐行计算
list3_element1 <- map2_dfc(list1_element1, list2_element2, ~map2_dbl(.x, .y, calc_value))

# 输出结果
list3_element1

运行后得到的结果与预期一致:

0     10
1 190.93 238.66
2 193.86  76.73
3 116.31 155.08

方法2:基础R实现(无需额外包)

# 示例数据
list1_element1 <- data.frame("0" = c(20, 150, 120),
                             "10" = c(20, 800, 120)) 

list2_element2 <- data.frame("0" = c(8, 10, 6),
                             "10" = c(10, 9, 8)) 

# 定义计算函数
calc_value_base <- function(x_temp, x_h) {
  k <- ifelse(x_temp > 0 & x_temp <= 20, 0.02514,
              ifelse(x_temp > 100 & x_temp <= 200, 0.03095,
                     ifelse(x_temp > 700 & x_temp <= 800, 0.07037, NA)))
  round(x_h * 0.6 / k, 2)
}

# 逐元素计算并转为数据框
list3_element1_base <- as.data.frame(
  mapply(function(col1, col2) mapply(calc_value_base, col1, col2),
         list1_element1, list2_element2)
)

# 输出结果
list3_element1_base

注意事项

  • 若list1中存在不在指定区间的温度值,上述代码会返回NA,可根据实际需求补充默认k值或异常处理逻辑
  • 结果保留两位小数,可通过调整round()函数的第二个参数修改精度
  • 对于超大型数据集,tidyverse方法的执行效率更优

内容的提问来源于stack exchange,提问作者Raquel Feltrin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:15:56