【问题标题】:How do I match the number of days in a month to a list level and carry out arithmetic in R如何将一个月中的天数与列表级别相匹配并在 R 中进行算术运算
【发布时间】:2021-11-05 12:52:28
【问题描述】:

我需要将列表中每一层的数据(每一层对应一个月)乘以该月的天数。

我的列表如下所示:

tmintest=array(0.11:100.4, c(1,256,512))
l <- lapply(1:12, function(i) {
#create the list
Variable <- list(varName = c("tmin","tmin","tmin","tmin","tmin","tmin","tmin","tmin","tmin","tmin","tmin","tmin"),level = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA))
Data = tmintest
xyCoords <- list(x = seq(-40.37,64.37,length.out=420), y = seq(25.37,72.37,length.out=189))
Dates <- list(start = seq(as.Date("2012-01-01"), as.Date("2015-12-31"), by="days"), end=seq(as.Date("2012-01-01"), as.Date("2015-12-31"), by="days"))
Delta <- list(Variable = Variable,Data=Data, xyCoords=xyCoords,Dates=Dates)
})

我想我需要定义月份和每月的天数:

  mth <- c(1:12)

#每月天数

  ndays <- c(31,28,31,30,31,30,31,31,30,31,30,31)

然后用这些信息制作一个数据框

mthdays<- as.data.frame(cbind(mth, ndays))

然后我需要将列表中每个级别的数字(例如一月是l[[1]])匹配到我的ndays(通过mth)并乘以该级别中的Datal[[1]][["Data"]] ) ndays。我认为使用 which 可能会很有用(将列表中每个级别的数字与我的数据框中的 mth 匹配,但我不确定最好的方法。

【问题讨论】:

    标签: r list


    【解决方案1】:

    我们可以使用for 循环。由于listlength为12且与ndays的顺序相同,只需循环l的序列,提取具有位置索引的list元素,得到内部命名列表元素'数据'(使用$)并与相应的'ndays'元素相乘

    for(i in seq_along(l)) l[[i]]$Data <- l[[i]]$Data * ndays[i]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2021-06-21
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      相关资源
      最近更新 更多