为什么lubridate::mdy()会在我的输入中缺少日期时添加日期?

为什么lubridate::mdy()会在我的输入中缺少日期时添加日期?,r,tidyverse,lubridate,R,Tidyverse,Lubridate,我有意在这段代码中省略日期,希望它失败、返回警告或返回不完整的记录 txt <- "January 2010" lubridate::mdy(txt) txt与解析顺序有关。根据?mdy 对于异构日期格式,ymd()族根据输入向量的子集猜测格式。如果输入向量包含许多缺少的值或非日期字符串,则子集可能不包含有意义的日期 原始字符串包括月份,后跟4位数的年份,mdy是month,dayyear和year可以是2位数或4位数。现在,有一个混淆,它选择2位数的年份作为“10

我有意在这段代码中省略日期,希望它失败、返回警告或返回不完整的记录

txt <-  "January 2010"
lubridate::mdy(txt)

txt与解析顺序有关。根据
?mdy

对于异构日期格式,ymd()族根据输入向量的子集猜测格式。如果输入向量包含许多缺少的值或非日期字符串,则子集可能不包含有意义的日期

原始字符串包括月份,后跟4位数的年份,
mdy
month
day
year
year
可以是2位数或4位数。现在,有一个混淆,它选择2位数的年份作为“10”,日期被解析为“20”。相反,如果我们添加一天,然后使用
mdy
,它将解析为4位数的年份

lubridate::myd(paste(txt, '01'))
#[1] "2010-01-01"

因为日期也包括一天。您可能需要
lubridate::myd(粘贴(txt,'01'))
毫无疑问,但是为什么是20,而不是0-31范围内的其他数字?或者它是随机的?
mdy
正在查找月份、日期和年份。此处缺少日期,它假定2位数字20为日期,最后2位数字为2010年的年份