Как мне создать таблицу 28-часовых часов с интервалом в 1 минуту?

#r #time #sequence #hour #minute

#r #время #последовательность #час #минута

Вопрос:

Я не очень знаком с использованием циклов. Я пытаюсь создать таблицу, подобную этой: 00:00 00:01 00:02 … 27:58 27:59 28:00

Это для данных, которые выполняются на следующий день, но все еще считаются частью исходного дня.

Я пробовал это:

 hh<-c(seq('00','28',1))  
mm<-c(seq('01','60',1))

for (i in (1:29)) {
  int<-paste(hh[i],":",mm)
}
View(int)
  

но он вставляет только минуты с 1 по 60 в 28-й час:
только 28-й час

Я надеюсь, что это проще, чем я представляю, я не знаю, как использовать sapply или lapply для этого. Спасибо за любую помощь.

Комментарии:

1. Кажется, я чего-то добиваюсь. Я попытался: « int<-c (sapply(hh, вставить, мм)) View (int) « но мне не хватает «:» между ними.

Ответ №1:

Вы можете сделать это с помощью outer :

 times <- c(t(outer(sprintf('d', 0:27),sprintf('d', 0:59),paste,sep = ":")))
#add the last time manually
times <- c(times, '28:00')

head(times, 8)  
#[1] "00:00" "00:01" "00:02" "00:03" "00:04" "00:05" "00:06" "00:07"
tail(times, 8)  
#[1] "27:53" "27:54" "27:55" "27:56" "27:57" "27:58" "27:59" "28:00"
  

sprintf добавляет 0 к однозначному числу, и мы paste каждый час (от 0 до 27) к каждой минуте (от 0 до 59).

Комментарии:

1. также gsub(' ', '0', times) или что-то еще, поскольку For numbers, pad to the field width with leading zeros. For characters, this zero-pads on some platforms and is ignored on others.

Ответ №2:

Это сработало и для меня:

 hh<-c(seq('00','28',1))
mm<-c(seq('00','59',1))

library(stringr)
hh<-str_pad(hh, 2,pad="0")
mm<-str_pad(mm, 2,pad="0")

times<-c(sapply(hh, paste, sep=":",mm))
View(times)