为什么lubridate mdy()在lappy()中返回错误?

为什么lubridate mdy()在lappy()中返回错误?,r,dplyr,lubridate,R,Dplyr,Lubridate,我试图理解为什么我的lubridatemdy()函数在lappy()中返回错误,以转换dplyr管道中的日期。我已经用类似的方法在其他数据上使用了mdy(),但还没有看到这个问题。我对R比较陌生,但到目前为止,我还能够解决其他问题。我不太熟悉如何使用lappy() 我的数据是一个大型的.csv水质数据,我正在对其进行子集设置,以简单地显示有问题的数据 library(dplyr) library(lubridate) require(lubridate) wq.all<-as.data.

我试图理解为什么我的
lubridate
mdy()
函数在
lappy()
中返回错误,以转换
dplyr
管道中的日期。我已经用类似的方法在其他数据上使用了
mdy()
,但还没有看到这个问题。我对R比较陌生,但到目前为止,我还能够解决其他问题。我不太熟悉如何使用
lappy()

我的数据是一个大型的.csv水质数据,我正在对其进行子集设置,以简单地显示有问题的数据

library(dplyr)
library(lubridate)
require(lubridate)

wq.all<-as.data.frame(read.csv('C:/WQdata.csv',header=TRUE,stringsAsFactors = FALSE))

test.wq<-wq.all[1:5,12:13]

class(test.wq)
[1] "data.frame"
mode(test.wq)
[1] "list"
str(test.wq)
'data.frame':   5 obs. of  2 variables:
 $ YearMonth : chr  "2019-07" "2019-06" "2019-05" "2019-04" ...
 $ SampleTime: chr  "07/09/2019 14:44" "06/10/2019 14:17" "05/22/2019 14:31" "04/08/2019 14:15" ...
但这会返回一个错误:

Error in lapply(list(...), .num_to_date) : object 'SampleDate' not found
如果我只使用
mutate()
这一切似乎都很好,并为我提供了新的
SampleDate
专栏:

wq.date<-test.wq%>%
  mutate(SampleDate=str_sub(test.wq[[2]],start=0,end=10))

head(wq.date)

  YearMonth       SampleTime SampleDate
1   2019-07 07/09/2019 14:44 07/09/2019
2   2019-06 06/10/2019 14:17 06/10/2019
3   2019-05 05/22/2019 14:31 05/22/2019
4   2019-04 04/08/2019 14:15 04/08/2019
5   2019-03 03/13/2019 14:19 03/13/2019

str(wq.date)

'data.frame':   5 obs. of  3 variables:
 $ YearMonth : chr  "2019-07" "2019-06" "2019-05" "2019-04" ...
 $ SampleTime: chr  "07/09/2019 14:44" "06/10/2019 14:17" "05/22/2019 14:31" "04/08/2019 14:15" ...
 $ SampleDate: chr  "07/09/2019" "06/10/2019" "05/22/2019" "04/08/2019" ...
wq.date%
突变(SampleDate=str_sub(test.wq[[2]],start=0,end=10))
总目(wq.日期)
年月采样时间采样日期
1   2019-07 07/09/2019 14:44 07/09/2019
2   2019-06 06/10/2019 14:17 06/10/2019
3   2019-05 05/22/2019 14:31 05/22/2019
4   2019-04 04/08/2019 14:15 04/08/2019
5   2019-03 03/13/2019 14:19 03/13/2019
str(wq.日期)
“data.frame”:5个obs。共有3个变量:
$YearMonth:chr“2019-07”“2019-06”“2019-05”“2019-04”。。。
$SampleTime:chr“07/09/2019 14:44”“06/10/2019 14:17”“05/22/2019 14:31”“04/08/2019 14:15”。。。
$SampleDate:chr“07/09/2019”“06/10/2019”“05/22/2019”“04/08/2019”。。。
因此,它似乎只有在我尝试使用
mdy()
强制时才会导致错误,即使
SampleDate
显然存在,并且我相信我正确引用了它。 我已经研究了其他的帖子和文章,但似乎都没有涉及到这个问题


想法?非常感谢

我们需要将其放入
mutate
或提取列中,否则,它将在整个data.frame上应用该函数。根据
?mdy

将存储在字符和数字向量中的日期转换为日期或POSIXct对象

因此,如果输入不是
向量
,它将不起作用

library(dplyr)
library(lubridate)
library(stringr)
test.wq%>%
   mutate(SampleDate=str_sub(SampleTime,start=0,end=10))%>%
   mutate(date = mdy(SampleDate))

我们需要将它放入
mutate
或提取列中,否则,它将在整个data.frame上应用该函数。根据
?mdy

将存储在字符和数字向量中的日期转换为日期或POSIXct对象

因此,如果输入不是
向量
,它将不起作用

library(dplyr)
library(lubridate)
library(stringr)
test.wq%>%
   mutate(SampleDate=str_sub(SampleTime,start=0,end=10))%>%
   mutate(date = mdy(SampleDate))

您正在对数据帧而不是向量调用
mdy
。这或多或少是一个输入错误,我可以看出您的变量是
char
。将它们格式化为日期
。您在数据帧而不是向量上调用的
wq.date$SampleDate
mdy
。这或多或少是一个输入错误,我可以看出您的变量是
char
。将它们格式化为日期
。沿着
wq.date$SampleDate的东西