Я начинаю с данных, которые выглядят так:
Date Time1 Time2
01/02/2018 01/02/2018 11:12 01/02/2018 13:14
01/03/2018 01/03/2018 09:09 01/03/2018 15:05
и я хочу, чтобы результат выглядел так:
Date Time1 Time2 Hour1 Hour2
01/02/2018 01/02/2018 11:12 01/02/2018 13:14 11 13
01/03/2018 01/03/2018 09:09 01/03/2018 15:05 9 15
Предположим, что время было успешно переведено в класс POSIXct.
В обычном сценарии R я использую этот код для создания своего вывода:
library(lubridate)
a <- ymd_hms(myDF$Time1)
var4 = hour(a)
myDF = cbind(myDF, var4, stringsAsFactors=FALSE)
names(myDF)[4]<-"Hour1"
library(lubridate)
a <- ymd_hms(myDF$Time2)
var5 = hour(a)
myDF = cbind(myDF, var5, stringsAsFactors=FALSE)
names(myDF)[5]<-"Hour2"
Но то, что работает в обычном R-скрипте, кажется, терпит неудачу, когда я пытаюсь запустить точно такой же код в блестящем приложении.
Когда я пытаюсь запустить этот код:
shinyServer(function(input, output))({
output$contents <- renderTable({
inFile <- input$file1
if (is.null(inFile))
return(NULL)
myDF = read.csv(inFile$datapath, sep=",")
timesData = myDF[,c(2:3)]
timesData$Time1 = as.POSIXct(timesData$Time1, format="%m/%d/%Y %H:%M",
tz="GMT")
timesData$Time2 = as.POSIXct(timesData$Time2, format="%m/%d/%Y %H:%M",
tz="GMT")
library(lubridate)
a <- ymd_hms(timesData$Time1)
var4 = hour(a)
myDF = cbind(myDF, var4, stringsAsFactors=FALSE)
names(myDF)[4]<-"Hour1"
library(lubridate)
a <- ymd_hms(timesData$Time2)
var5 = hour(a)
myDF = cbind(myDF, var5, stringsAsFactors=FALSE)
names(myDF)[5]<-"Hour2"
})
})
shinyui(
mainPanel(
tableOutupt("contents")
)
))
Я получаю это как мой вывод:
Date Time1 Time2 Hour1 Hour2
01/02/2018 01/02/2018 11:12 01/02/2018 13:14 18 18
01/03/2018 01/03/2018 09:09 01/03/2018 15:05 18 18
Он заполняет каждую строку обоих часовых столбцов значением «18», а когда я попытался использовать «a ‹- ymd_hm(timesData$Time2)», он вместо этого заполнил каждую строку обоих часовых столбцов значением «NA». Что мне нужно сделать, чтобы он заполнил строки моих часовых столбцов фактическими часами?