【问题标题】:R function - IndexR 功能 - 索引
【发布时间】:2022-10-06 20:34:53
【问题描述】:

由于没有 R 包,我有一个关于创建自己的函数来计算 SAPEI 指数的问题 -s标准化一个先行者p沉淀e蒸散一世ndex ("中国应用的次月复合干热条件标准化指标" by李等人,2021)。据我了解,要计算 SAPEI 指数,我需要首先计算每个日历日的降水量和 PET (例如 3 个月刻度)之间的累积日差。

方程如下:

我做了什么:

WSD <- function(P, PET, n){
 
  wat_bal <- P - PET
  
  for(i in (n+1):length(wat_bal)){ 
   
    condition = ifelse(wat_bal > 0, \"wet\", \"dry\")

    return(data.frame(wat_bal, condition))
  }
}

不幸的是,我没有得到预期的结果。我知道我的功能不完整,但我也不知道如何进一步进行。特别是n(前几天)是一个问题。谁能帮帮我?

非常感谢您提前 费边

  • 您正在中止该功能(通过return()里面你的循环。因此,您只需要执行循环的第一次迭代、中止并返回您生成的第一个 condition 值。
  • @MikkoMarttila,请张贴作为答案?

标签: r function compound-index


【解决方案1】:

@MikkoMarttila 不幸的是, cumsum() 函数没有工作,只是每天累积值。也许我会引用文章的一部分:“[...] 计算降水量和潜在蒸散量之间的每日差异以估计水平衡。为了反映给定一天的干湿条件,之前的水盈余或不足(WSD) 的计算公式如下:(见上),其中 n 是前几天的天数,PET 代表潜在蒸散量,P 代表降水量。WSD 值可以在不同的时间尺度上进行聚合,例如 3、6 、9 个月等。[...]”(Li 等人,2021 年)。

  WSD <- function(P, PET, n){
 
  wat_bal <- cumsum(P - PET)
  
  for(i in (n+1):length(wat_bal)){ 
   
    condition = ifelse(wat_bal > 0, "wet", "dry")

    }
   return(data.frame(wat_bal, condition))
}

【讨论】:

    【解决方案2】:

    根据您对算法的描述,听起来您可以这样做:

    wsd <- cumsum(p - pet)
    

    【讨论】:

      猜你喜欢
      • 2021-01-29
      • 1970-01-01
      • 2020-05-06
      • 2011-03-16
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多