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

R语言中如何根据数组Tw的正负对数组Ta应用不同计算函数

问题原因

你使用的if是R的标量条件判断语句,当传入数组Tw>=0的布尔数组时,R只会读取数组第一个元素的判断结果决定走哪个分支,因此会全局应用同一个计算函数,无法实现逐元素对应判断的需求。

正确实现方案

方案1:逻辑索引赋值(推荐,大数组运算效率更高)

直接通过布尔索引定位不同分支的元素位置,分别赋值计算,适合你这种2160×1080×12的高维数组,运算速度快内存占用低:

# 预分配和Tw同维度的结果数组
es <- array(dim = dim(Tw))

# 计算Tw>=0对应位置的结果
pos_mask <- Tw >= 0
es[pos_mask] <- 6.107 * exp(17.38 * Ta[pos_mask]/(239. + Ta[pos_mask]))

# 计算Tw<=0对应位置的结果
neg_mask <- Tw <= 0
es[neg_mask] <- 6.107 * exp(22.44 * Ta[neg_mask]/(272.4 + Ta[neg_mask]))

方案2:向量化函数封装

用ifelse(R的向量化条件判断函数)封装逻辑,代码更简洁:

t.es <- function(Tw, Ta) {
  ifelse(
    Tw >= 0,
    6.107 * exp(17.38 * Ta/(239. + Ta)),
    6.107 * exp(22.44 * Ta/(272.4 + Ta))
  )
}

es <- t.es(Tw, Ta)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:27:00