[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