#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)