[R-pkg-devel] Warning 'as.data.frame.POSIXct()' is deprecated
Tim Taylor
t|m@t@y|or @end|ng |rom h|ddene|eph@nt@@co@uk
Thu Jul 6 16:11:41 CEST 2023
Ah yes ... and reading the as.data.frame help we see (emphasis mine):
"... Direct calls to as.data.frame.<class>() are still possible (*base
package!*), for 12 atomic base classes, but will deprecated ..."
So it does seem that a lot of these warnings are triggered by base R and
updating this code may be a work in progress.
A little tangential (but related) to this though is still the fact that
we can trigger the warning with:
lapply(Sys.Date(), as.data.frame)
so I wonder if the code in base/R/zzz.R
(https://github.com/wch/r-source/blob/9f1940663f902174034a01197e55fd17c767213a/src/library/base/R/zzz.R#L664-L686)
does need tweaking?
At this stage this is probably more a question for R-devel though.
Tim
On 06/07/2023 14:42, Enrico Schumann wrote:
> On Thu, 06 Jul 2023, Vincent van Hees writes:
>
>> Thanks, in that case the REPLEX for the issue may need to be:
>>
>>> remember = Sys.getenv("_R_CHECK_AS_DATA_FRAME_EXPLICIT_METHOD_")
>>> Sys.setenv("_R_CHECK_AS_DATA_FRAME_EXPLICIT_METHOD_" = TRUE)
>>> data.frame(time = Sys.time())
>> time
>> 1 2023-07-06 14:29:37
>>> data.frame(time = as.POSIXlt(Sys.time()))
>> time
>> 1 2023-07-06 14:29:37
>> Warning message:
>> Direct call of 'as.data.frame.POSIXct()' is deprecated. Use
>> 'as.data.frame.vector()' or 'as.data.frame()' instead
>>> Sys.setenv("_R_CHECK_AS_DATA_FRAME_EXPLICIT_METHOD_" = remember)
>
> I think it happens because
>
> data.frame(<POSIXlt>)
>
> calls 'as.data.frame.POSIXlt' (per its S3-class), which
> in turn directly calls 'as.data.frame.POSIXct':
>
> ## as.data.frame.POSIXlt
> function (x, row.names = NULL, optional = FALSE, ...)
> {
> value <- as.data.frame.POSIXct(as.POSIXct(x), row.names,
> optional, ...)
> if (!optional)
> names(value) <- deparse1(substitute(x))
> value
> }
> <environment: namespace:base>
>
> Kind regards
> Enrico
>
>> Vincent
>>
>> On Thu, 6 Jul 2023 at 10:41, Tim Taylor <tim.taylor using hiddenelephants.co.uk>
>> wrote:
>>
>>> Apologies - I've not had enough caffeine just yet. The reprex below
>>> highlights the issue but I think the code which implemented the change
>>> *may* need tweaking not lapply.
>>>
>>> Tim
>>>
>>> On 06/07/2023 09:26, Tim Taylor wrote:
>>>> This *may* be an issue in lapply. Let's see what others day. Reprex
>>>> below
>>>>
>>>> Sys.setenv("_R_CHECK_AS_DATA_FRAME_EXPLICIT_METHOD_" = TRUE)
>>>> dat <- Sys.Date()
>>>> as.data.frame(dat)
>>>> #> dat
>>>> #> 1 2023-07-06
>>>> lapply(dat, as.data.frame)
>>>> #> Warning: Direct call of 'as.data.frame.Date()' is deprecated. Use
>>>> #> 'as.data.frame.vector()' or 'as.data.frame()' instead
>>>> #> [[1]]
>>>> #> X[[i]]
>>>> #> 1 2023-07-06
>>>>
>>>> Tim
>>>>
>>>> On 06/07/2023 08:54, Vincent van Hees wrote:
>>>>> Dear all,
>>>>>
>>>>> I see the following warning in my package test results:
>>>>>
>>>>> ```
>>>>> Warning
>>>>> Direct call of 'as.data.frame.POSIXct()' is deprecated. Use
>>>>> 'as.data.frame.vector()' or 'as.data.frame()' instead
>>>>> ```
>>>>>
>>>>> The warning is not always there and I struggle to make it
>>>>> reproducible. I
>>>>> have encountered it in both Ubuntu 22.04 and in Windows 11, in both R
>>>>> 4.3.0
>>>>> and 4.3.1, in both RStudio and in an GitHub Actions environment (example
>>>>> <https://github.com/wadpac/GGIR/actions/runs/5463862340/jobs/9945096566>).
>>>>> The warning gives the impression that I am doing something that R no
>>>>> longer
>>>>> supports. However, I am not using the command as.data.frame.POSIXct()
>>>>> anywhere directly in my code.
>>>>>
>>>>> When I dive into the code where the warnings occur I see patterns like:
>>>>>
>>>>> ```
>>>>> now = Sys.time()
>>>>> df = data.frame (time = seq(now, now + 10, by =1), B = 1:11)
>>>>> ```
>>>>>
>>>>> (this is a simplification of for example:
>>>>>
>>> https://github.com/wadpac/GGIR/blob/master/tests/testthat/test_read.myacc.csv.R
>>>>> )
>>>>>
>>>>> Does this mean I am discouraged from putting a vector with POSIXct
>>>>> values
>>>>> in a data.frame?
>>>>> If yes, what would be the recommended work around?
>>>>>
>>>>> I have been trying to find documentation or online discussions about
>>>>> this
>>>>> warning but no luck so far. I see R NEWS
>>>>> <https://cran.r-project.org/doc/manuals/r-release/NEWS.html> mentions
>>>>> updates to POSIXct related objects several times in the past year but
>>>>> those
>>>>> seem to be different issues.
>>>>>
>>>>> Best,
>>>>>
>>>>> Vincent
>>>>>
>>>>> [[alternative HTML version deleted]]
>>>>>
>>>>> ______________________________________________
>>>>> R-package-devel using r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>>> ______________________________________________
>>>> R-package-devel using r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-package-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
More information about the R-package-devel
mailing list