na.spline не применяется при использовании внутри lapply - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь запустить na.spline из пакета zoo внутри lapply для временной интерполяции, но он не заполняет NA s:

Код, который я использовал до сих пор is:

    library(tidyverse)
    library(fs)
    library(readxl)
    library(zoo)

    path <- "Aboslute_NDVI_Anomaly_2015_Zonal_Statistics.xlsx"

    #get the sheet names
    path %>%
      excel_sheets()

    #transform the sheets into a list of data frames
    df <- path %>%
      excel_sheets() %>%
      set_names() %>%
      map(read_excel,skip = 1, path = path, col_types = "numeric")

    str(df)

  cleaner <- function(df, cleaner){
  #drop the first 2 columns
  df <- df[ ,-c(1,2)]
  # an optional set of numeric values specifying where interpolation is to take place
  x <- dplyr::pull(df, "DOY_SEQ")
  # interpolation using splines
  na.spline(df, method="natural",xout=x)
  # return cleaned df      
  return(df)
}
df[] <- lapply(df, cleaner)
str(df)

    #export
    write.table(df,"df.txt")

Проблема в том, что всякий раз, когда я запускаю na.spline без дополнительных аргументов (например, df[] <- lapply(df, zoo::na.spline)), код в порядке. Какие-нибудь мысли? Вот воспроизводимый пример:

structure(list(Date = structure(c(1416182400, 1416873600, 1417564800, 
1418256000, 1418947200, 1419638400, 1420070400, 1420761600, 1421452800, 
1422144000, 1422835200, 1423526400, 1424217600, 1424908800, 1425600000, 
1426291200, 1426982400, 1427673600, 1428364800, 1429056000, 1429747200, 
1430438400, 1431129600, 1431820800, 1432512000, 1433203200, 1433894400, 
1434585600, 1435276800, 1435968000, 1436659200), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), DOY = c("321", "329", "337", "345", 
"353", "361", "001", "009", "017", "025", "033", "041", "049", 
"057", "065", "073", "081", "089", "097", "105", "113", "121", 
"129", "137", "145", "153", "161", "169", "177", "185", "193"
), `1556_7S_15D` = c("4", "2", "4", "4", "4", "4", "4", "3", 
"3", "4", "NA", "NA", "4", "4", "4", "4", "3", "4", "4", "4", 
"4", "4", "4", "4", "4", "4", "4", "4", "4", "4", "4"), `2216_7S_15D` = c("3", 
"3", "3", "3", "3", "3", "2", "3", "NA", "3", "NA", "NA", "3", 
"NA", "NA", "1", "NA", "3", "3", "3", "3", "3", "3", "3", "3", 
"3", "3", "3", "3", "3", "3"), `3220_7S_15D` = c("6", "1", "6", 
"6", "6", "6", "6", "6", "6", "6", "2", "5", "6", "6", "6", "6", 
"NA", "6", "6", "6", "NA", "6", "6", "6", "6", "6", "6", "6", 
"6", "6", "6"), `3343_7S_15D` = c("4", "NA", "4", "4", "4", "4", 
"4", "4", "2", "4", "NA", "NA", "4", "4", "4", "2", "NA", "4", 
"4", "4", "4", "4", "4", "4", "4", "4", "4", "4", "4", "4", "4"
), `4168_7S_15D` = c("2", "4", "4", "4", "4", "4", "NA", "4", 
"NA", "4", "NA", "NA", "4", "4", "4", "4", "NA", "4", "4", "4", 
"NA", "4", "3", "4", "4", "4", "4", "4", "4", "4", "4"), `4303_7S_15D` = c("4", 
"4", "4", "NA", "4", "4", "4", "4", "NA", "4", "NA", "4", "4", 
"4", "NA", "NA", "NA", "4", "4", "4", "4", "4", "4", "4", "4", 
"4", "4", "4", "4", "4", "4"), `4304_7S_15D` = c("4", "4", "4", 
"NA", "4", "4", "4", "4", "NA", "4", "NA", "4", "4", "4", "NA", 
"NA", "NA", "4", "4", "4", "4", "4", "4", "4", "4", "4", "4", 
"4", "4", "4", "4"), `4307_7S_15D` = c("3", "2", "3", "NA", "3", 
"3", "3", "3", "3", "3", "3", "NA", "3", "3", "NA", "3", "3", 
"3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", 
"3"), `4556_7S_15D` = c("3", "NA", "3", "3", "NA", "3", "3", 
"3", "NA", "3", "3", "2", "3", "3", "NA", "NA", "3", "3", "3", 
"3", "2", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3"), 
    `4573_7S_15D` = c("4", "NA", "4", "4", "NA", "4", "4", "4", 
    "4", "4", "NA", "4", "4", "4", "4", "4", "4", "4", "4", "4", 
    "2", "4", "4", "4", "4", "4", "4", "4", "4", "4", "4"), DOY_SEQ = c(26, 
    27, 28, 29, 30, 31, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
    13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)), row.names = c(NA, 
-31L), class = c("tbl_df", "tbl", "data.frame"))
...