在R语言中计算两个同结构列表对应分组的RMSE值的方法
解法1:匹配参考格式的手动计算方法
直接按月份提取对应元素分别计算即可,代码如下:
# 加载RMSE计算依赖包 library(Metrics) # 按月份分别计算RMSE r1 <- rmse(obs$Jan, sim$Jan) r2 <- rmse(obs$Feb, sim$Feb) r3 <- rmse(obs$Mar, sim$Mar) # 汇总为列表输出 out <- list(r1, r2, r3)
如果需要输出结果和月份对应,可以把最后一行改为out <- list(Jan = r1, Feb = r2, Mar = r3),方便后续调用对应月份的结果。
解法2:扩展性更强的批量计算方法
如果后续分组数量增加,不需要手动逐个写计算语句,直接用mapply匹配两个列表的同名元素批量计算即可:
library(Metrics) # 自动匹配obs和sim的同名字段批量计算RMSE out <- mapply(rmse, obs, sim) # 如需输出列表格式,增加一步转换即可 out <- as.list(out)
两种方法得到的计算结果完全一致。
内容的提问来源于stack exchange,提问作者Hüsamettin Tayşi
相关产品推荐
相关产品推荐

