Skip to content

Instantly share code, notes, and snippets.

@jeffreyhorner
Created March 25, 2011 02:14
Show Gist options
  • Save jeffreyhorner/886245 to your computer and use it in GitHub Desktop.
Save jeffreyhorner/886245 to your computer and use it in GitHub Desktop.
toSeconds <- function(x){
if (!is.character(x)) stop("x must be a character string of the form H:M:S")
if (length(x)<=0)return(x)
unlist(
lapply(x,
function(i){
i <- as.numeric(strsplit(i,':',fixed=TRUE)[[1]])
if (length(i) == 3)
i[1]*3600 + i[2]*60 + i[3]
else if (length(i) == 2)
i[1]*60 + i[2]
else if (length(i) == 1)
i[1]
}
)
)
}
secondsToString <- function(x){
unlist(
lapply(x,
function(i){
fmt <- ''
if (i >= 3600)
fmt <- '%H:%M:%S'
else if (i >= 60)
fmt <- '%M:%S'
else
fmt <- '%S'
i <- format(as.POSIXct(strptime("0:0:0","%H:%M:%S")) + round(i), fo
rmat=fmt)
i
}
)
)
}
milesToMeters <- function(miles=1){
miles * 1609.344
}
metersToMiles <- function(meters=1){
meters / 1609.344
}
toMPH <- function(secs=0,miles=NA,meters=NA){
if (is.na(miles) && is.na(meters)) stop("Need miles or meters")
miles <- ifelse (is.na(miles),miles <- metersToMiles(meters),miles)
secs <- ifelse (is.character(secs), toSeconds(secs), secs)
miles / (secs / 3600)
}
toKPH <- function(secs=0,miles=NA,meters=NA){
if (is.na(miles) && is.na(meters)) stop("Need miles or meters")
meters <- ifelse (is.na(meters),meters <- milesToMeters(miles),meters)
secs <- ifelse (is.character(secs), toSeconds(secs), secs)
(meters/1000) / (secs / 3600)
}
toMinPerMile <- function(secs=0,miles=NA,meters=NA){
if (is.na(miles) && is.na(meters)) stop("Need miles or meters")
miles <- ifelse (is.na(miles),miles <- metersToMiles(meters),miles)
secs <- ifelse (is.character(secs), toSeconds(secs), secs)
secondsToString(secs / miles)
}
unixunits <- function(fromU=NA,toU=NA){
as.numeric(system(paste('units -t',fromU,toU),intern=TRUE))
}
toSeconds <- function(x){
if (!is.character(x)) stop("x must be a character string of the form H:M:S")
if (length(x)<=0)return(x)
unlist(
lapply(x,
function(i){
i <- as.numeric(strsplit(i,':',fixed=TRUE)[[1]])
if (length(i) == 3)
i[1]*3600 + i[2]*60 + i[3]
else if (length(i) == 2)
i[1]*60 + i[2]
else if (length(i) == 1)
i[1]
}
)
)
}
secondsToString <- function(x){
unlist(
lapply(x,
function(i){
fmt <- ''
if (i >= 3600)
fmt <- '%H:%M:%S'
else if (i >= 60)
fmt <- '%M:%S'
else
fmt <- '%S'
i <- format(as.POSIXct(strptime("0:0:0","%H:%M:%S")) + round(i), format=fmt)
i
}
)
)
}
milesToMeters <- function(miles=1){
miles * 1609.344
}
metersToMiles <- function(meters=1){
meters / 1609.344
}
toMPH <- function(secs=0,miles=NA,meters=NA){
if (is.na(miles) && is.na(meters)) stop("Need miles or meters")
miles <- ifelse (is.na(miles),miles <- metersToMiles(meters),miles)
secs <- ifelse (is.character(secs), toSeconds(secs), secs)
miles / (secs / 3600)
}
toKPH <- function(secs=0,miles=NA,meters=NA){
if (is.na(miles) && is.na(meters)) stop("Need miles or meters")
meters <- ifelse (is.na(meters),meters <- milesToMeters(miles),meters)
secs <- ifelse (is.character(secs), toSeconds(secs), secs)
(meters/1000) / (secs / 3600)
}
toMinPerMile <- function(secs=0,miles=NA,meters=NA){
if (is.na(miles) && is.na(meters)) stop("Need miles or meters")
miles <- ifelse (is.na(miles),miles <- metersToMiles(meters),miles)
secs <- ifelse (is.character(secs), toSeconds(secs), secs)
secondsToString(secs / miles)
}
unixunits <- function(fromU=NA,toU=NA){
as.numeric(system(paste('units -t',fromU,toU),intern=TRUE))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment