这里如何不使用嵌套lapply?

问题描述 投票:0回答:2

使用此代码检查日期格式是否与我的数据框的日期变量匹配:

df %>% 
  select(date_vars) %>%
  lapply(function(x) x[!is.na(x)]) %>%
  lapply(check_date_format) %>%
  lapply(all)

一切正常,但我想知道是否有人可以告诉我是否有一种更简单的方法可以做到这一点,而无需不断嵌套 lapply。

r tidyverse data-cleaning
2个回答
0
投票

我看起来您想在 data.frame 中找到所有有效日期。

她是一种对 data.frame 进行子集化的方法,使其仅包含具有有效 date_vars 的数据

library(tidyverse)


df = data.frame(date_vars = c("2023-08-15", "4281-41-21", "", "1928-08-08"))

df %>% 
  mutate(date_vars = as.Date(date_vars)) %>% 
  subset(!is.na(date_vars))

如果你想要一个有效日期的逻辑向量,你可以这样做:

df %>% 
  mutate(is_valid_date = ifelse(!is.na(date_vars %>% 
                                         as.Date), TRUE, FALSE))

0
投票

通常你可以将所有内容放入一个单独的应用程序中,如下所示:

df %>% 
  select(date_vars) %>%
  lapply(function(x) {
    {x[!is.na(x)]} %>%
    check_date_format() %>%
    all()
  })

但不确定这是否适用于您的具体情况。

© www.soinside.com 2019 - 2024. All rights reserved.