R语言:在循环中基于站点名称从数据框提取对应mAOD值
解决方案
首先要明确:你当前的循环是遍历dataList里的数据表对象,而非站点名称,所以第一步要把遍历对象改成列表的名称,这样才能拿到站点名字符串去匹配diverInfo。
下面分两种常见的diverInfo数据结构给出完善代码:
情况1:diverInfo的列名是站点名称,mAOD是对应行的数值
比如diverInfo的行是指标名称(包含'mAOD'),列是站点名:
# 遍历dataList的名称(即站点名) for (site_name in names(dataList)) { # 提取对应站点列、mAOD行的数值 tubeTop <- diverInfo["mAOD", site_name] }
情况2:diverInfo的行名是站点名称,有一列叫'mAOD'
比如diverInfo的每行对应一个站点,单独有'mAOD'列存储数值:
for (site_name in names(dataList)) { # 提取对应站点行、mAOD列的数值 tubeTop <- diverInfo[site_name, "mAOD"] }
如果diverInfo里的站点名大小写和dataList的名称不一致(比如示例里的'Crose Mere'和'crose mere'),可以用大小写转换统一后匹配,比如:
tubeTop <- diverInfo["mAOD", tolower(site_name)] # 可根据实际情况调整大小写转换方向
内容的提问来源于stack exchange,提问作者Melanie Baker
相关产品推荐
相关产品推荐

