Я использую функцию, использующую purrr::map
, которая выдаст ошибку, если информационный кадр не содержит числовых данных (т. Е. Na.omit не возвращает никаких допустимых строк).Я обнаружил map_if, но, похоже, map_if возвращает .x, если .p имеет значение false.Есть ли способ вернуть НА.Этот пример должен объяснить, что мне нужно:
library(openair)
library(tidyverse)
# Build test dataset
df1 <- mydata
df2 <- mydata
df2$no2 <- NA_real_
df3 <- mydata
dfx <- tibble(id = c(1, 2, 3), data = list(df1, df2, df3))
# polarPlot function will return error if dataframe does not contain numeric data (i.e., it only contains NAs)
polarPlot(df2, pollutant = "no2")
# Function to test length of dataframe (i.e., if 0 theneverything is NAs)
check_length <- function(x) (x %>% select(ws, wd, "no2") %>% na.omit() %>% nrow()) > 0
check_length(df1)
check_length(df2)
# purrr::map (is there a way for map_if to return NA if length == 0?)
dfx %>% mutate(mynewvar = map_if(.x = data, check_length, ~ polarPlot(.x, pollutant = "no2")))
Другими словами, я бы хотел, чтобы mynewvar[[2]]
вернул NA.