R 尝试存储从函数中插补的值失败
伙计们,我试图用一个函数来插补缺失的值,函数本身在这方面起作用,但无法存储插补的值 下面显示函数,gh_Df是数据集R 尝试存储从函数中插补的值失败,r,function,missing-data,fillna,R,Function,Missing Data,Fillna,伙计们,我试图用一个函数来插补缺失的值,函数本身在这方面起作用,但无法存储插补的值 下面显示函数,gh_Df是数据集val是FacilityName变量中的值,lat和long是我希望填充的相应值 fill_lat_long_na <- function(val, lat, long){ if(is.na(gh_Df[gh_Df$FacilityName == val,]$Latitude)){ gh_Df[gh_Df$FacilityName == val,]$Latitud
val
是FacilityName变量中的值,lat
和long
是我希望填充的相应值
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)
fill_lat_long_na通常从函数内部更改数据帧不是一个好的做法。您可以返回更改后的数据帧,并将其保存在函数外部
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
fill_lat_long_na谢谢@Ronak,非常感谢。在您看来,解决此类问题的更好的总体方法是什么,我来自Python,在Python中,使用map
可以很容易地重新评估插补值,我不知道是否有类似的方法用于R。如果您必须一次插补一个缺失的值(如本例中所示)那么我认为这个方法是好的。我同意@Ronak Shah。此外,donsider还向函数添加了一个参数,以定义要修改的数据帧。这使它更具普遍性。如果将dataframe参数作为第一个参数,则可以轻松地将函数用作管道的一部分,这可能会改进工作流。