Я пытаюсь запустить 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"))