as.Date возвращает число при работе с Shiny - PullRequest
0 голосов
/ 16 октября 2019

Я работаю с формами Google, чтобы создать форму подписки. Поскольку вопрос типа «дата», используемый в формах Google, немного сбивает с толку людей, мало знакомых с технологиями (люди, которые собираются подписаться, относятся к группе риска), я решил разделить год, месяц и день рождения на триразличные вопросы, а затем объединить, используя as.Date. Я бы загрузил файл .csv, сгенерированный формами Google, используя fileInput и renderTable для отображения данных.

Этот код отлично работает в консоли

# read the file from my computer
df <- read_csv("~APAMI/R/base.csv")
    colnames(df)<- c("day", "month", "year")
    dn <- as.Date(with(df, paste("year", "month", "day",sep="-")), "%Y-%m-%d")
    df$dn<-dn
    df

Но когда я применяю этот код кдата возвращает число, а не дату. Я пытался использовать lubridate и использовать «as.character» вместо «paste». Я попытался использовать функцию «origin» в as.Date, а также параметр POSIXc. Получил тот же результат.

Я действительно не могу использовать вопрос о дате в формах, потому что людям трудно заполнить анкету и постоянно вводят неправильную дату рождения.

UI

library(shiny)
library(readr)
library(date)

shinyUI(fluidPage(

  titlePanel("Triagem da Inscrição para APAMI"),

  sidebarLayout(
    sidebarPanel(
      fileInput('datafile', 'Base de Dados')
    ),

    mainPanel(
       tableOutput("tabela")
    )
  )
))

SERVER

library(shiny)
library(readr)
library(date)

shinyServer(function(input, output) {

  output$tabela <- renderTable ({

    inFile <- input$datafile 

    if(is.null(inFile))
      return(NULL)

    df <- read_csv(inFile$datapath)
    colnames(df)<- c("year", "month", "day")
    dn <- as.Date(with(df, paste(year, month, day,sep="-")), "%Y-%m-%d")
    df$dn<-dn
    df
  })
})

Что мне делать?

1 Ответ

0 голосов
/ 16 октября 2019

Я использовал функцию "strftime". Кстати, я использовал «read.csv» вместо «read_csv», потому что я получил ошибку при запуске вашего кода.

dn <- strftime(paste(df$year, df$month, df$day,sep="-"), "%Y-%m-%d")
...