Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 尝试存储从函数中插补的值失败_R_Function_Missing Data_Fillna - Fatal编程技术网

R 尝试存储从函数中插补的值失败

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

伙计们,我试图用一个函数来插补缺失的值,函数本身在这方面起作用,但无法存储插补的值

下面显示函数,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,]$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参数作为第一个参数,则可以轻松地将函数用作管道的一部分,这可能会改进工作流。