%/%
(integer division) и %%
(modulo) операторы являются вашими друзьями:
x <- 96
paste(x %/% 60, x %% 60, sep = ":")
, который дает
> paste(x %/% 60, x %% 60, sep = ":")
[1] "1:36"
Здесь она находится в функции :
d2ms <- function(x) {
paste(x %/% 60, x %% 60, sep = ":")
}
> xx <- c(120, 96, 45, 30)
> d2ms(xx)
[1] "2:0" "1:36" "0:45" "0:30"
Что показывает, что нам нужна небольшая помощь, чтобы получить именно тот формат, который вам нужен; см ?sprint
пути к форматирования чисел [как символы] с ведущими 0s и т.д.:
d2ms <- function(x) {
sprintf("%02d:%02d", x %/%60, x %% 60)
}
> d2ms(xx)
[1] "02:00" "01:36" "00:45" "00:30"
Обратите внимание, что :
в строке выше является буквальным, то %xxy
биты форматы для значений, указанных в следующих двух аргументов и включают в себя детали форматирования для числа нулей на площадку шаблон для этого использования здесь является (то есть площадки с нулями до тех пор, номер использует две цифры.):
%[flag][width]specifier
,
где здесь мы использовали:
0
как флаг --- площадку с 0
сек ширина была 2
- , мы хотим ММ или СС
- спецификатор был
d
для целых чисел (также может быть i
)
ли вам это нужно или нет до вашего конечного варианта использования.
Эти операторы весьма полезны для такого рода операций; другой пример - преобразование из градусов, минут, секундных обозначений в десятичные градусы для пространственных координат.
Я не останавливался с обвинениями; Я представил свой ответ, понял, что это не на 100% точно то, что хотел OP, так что это логичная штука и спринт-вывод. 'sprintf()' вряд ли так странно является загадочной частью R или вычисляет для вывода строк, что невозможно, чтобы у двух людей появилось одно и то же решение. –
На самом деле я не даю фига, если с ним все в порядке или нет; Я не копировал ваш ответ (мы все еще учимся в школе?), Я просто понял, как я представил ответ, что это было не совсем правильно, и приступил к исправлению этого незначительного момента. –
Хорошо, я сформулировал это очень плохо. Я должен был просто сказать: «Эй, твое редактирование - это в основном мой ответ» или что-то вообще. Я удалил свои комментарии. Извините за то, что он был груб. На самом деле не думайте, что вы добровольно скопировали мой ответ, конечно. Был просто удивлен, увидев, что мой ответ реплицирован и прокомментирован, не так много думая. Надеюсь, это немного разъяснит. – nicola