微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试存储从函数推算的值失败 结果结果

如何解决尝试存储从函数推算的值失败 结果结果

帮助大家,我正在尝试使用函数估算缺失值,该函数本身在这方面有效,但无法存储估算值。

下图为函数gh_Df为数据集; valFacilityName 变量中的值,latlong 分别是我希望填充的值。

fill_lat_long_na <- function(val,lat,long){
  if(is.na(gh_Df[gh_Df$FacilityName == val,]$Latitude)){
    gh_Df[gh_Df$FacilityName == val,]$Latitude <- lat
    gh_Df[gh_Df$FacilityName == val,]$Longitude <- long
  
    
  }
   print(gh_Df[gh_Df$FacilityName == val,])
}

## Check
fill_lat_long_na("Yapesa St.Mary Clinic",6.43011,-1.33299)

结果

纬度 经度
6.43011 -1.33299

但是,如果我返回并在函数外运行以下内容,它仍会显示空/NA 行。

print(gh_Df[gh_Df$FacilityName == "Yapesa St.Mary Clinic",])

结果

纬度 经度
不适用 不适用

有没有办法解决这个问题,并且数据集内的值实际上会发生变化?

谢谢。

解决方法

通常从函数内部更改数据框不是一个好习惯。您可以 return 更改的数据框并将其保存在函数之外。

fill_lat_long_na <- function(val,lat,long){
  if(is.na(gh_Df[gh_Df$FacilityName == val,]$Latitude)){
    gh_Df[gh_Df$FacilityName == val,]$Latitude <- lat
    gh_Df[gh_Df$FacilityName == val,]$Longitude <- long
  }
  return(gh_Df)
}

gh_Df <- fill_lat_long_na("Yapesa St.Mary Clinic",6.43011,-1.33299)
gh_Df

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。