rhandsontable 格式化日期时显示错误的格式日期

rhandsontable wrong format date display when formatting dates

我有一个简单的 rhandsontable shiny 应用程序显示日期,但日期显示不正确。

    library(rhandsontable)   
    library(magrittr)

    DF_na = data.frame(integer = c(NA, 2:10), 
                               logical = c(NA, rep(TRUE, 9)), 
                               character = c(NA, LETTERS[1:9]),
                               factor = c(NA, factor(letters[1:9])),
                               date = c(NA, seq(from = Sys.Date(), by = "days", 
                                                length.out = 9)),
                               stringsAsFactors = FALSE)

            DF_na$factor_ch = as.character(DF_na$factor)
            DF_na$date_ch = c(NA, as.character(seq(from = Sys.Date(), by = "days", 
                                                   length.out = 9)))

            rhandsontable(DF_na) %>%
 hot_col("date", dateFormat = "DD/MM/YYYY", type = "date")

格式显示错误。日期在我的应用程序中显示为 MM-DD-YY,但我需要是 DD-MM-YY

格式化 R 中的日期:

x <- format(seq(from = Sys.Date(), by = "days", length.out = 9), "%d/%m/%Y")

DF_na = data.frame(integer = c(NA, 2:10), 
                   logical = c(NA, rep(TRUE, 9)), 
                   character = c(NA, LETTERS[1:9]),
                   factor = c(NA, factor(letters[1:9])),
                   date = as.character(c(NA,x)),
                   stringsAsFactors = FALSE)

rhandsontable(DF_na) %>%
  hot_col("date", dateFormat = "DD/MM/YYYY", type = "date")

根据这个 https://github.com/jrowen/rhandsontable/issues/145 问题,您必须使用自定义日期格式,您必须执行以下操作:

  1. 将数据框日期列转换为字符
  2. 在hot_col规范中指定日期格式
  3. 使用hot_to_r
  4. 读取输入$table后从字符串转换回来

修复格式的正确代码清单是:

library(rhandsontable)   
library(magrittr)

DF_na = data.frame(integer = c(NA, 2:10), 
                   logical = c(NA, rep(TRUE, 9)), 
                   character = c(NA, LETTERS[1:9]),
                   factor = c(NA, factor(letters[1:9])),
                   date = c(NA, seq(from = Sys.Date(), by = "days", 
                                    length.out = 9)),
                   stringsAsFactors = FALSE)

DF_na$factor_ch = as.character(DF_na$factor)
DF_na$date_ch = format(as.Date(DF_na$date, origin = "1970-01-01"), "%d/%m/%y")

rhandsontable(DF_na) %>%
  hot_col("date_ch", dateFormat = "DD/MM/YY", type = "date")