ourMELONS/R/matlab2r.R

39 lines
1.1 KiB
R
Raw Normal View History

2020-11-09 14:30:09 +01:00
#' @title Convert Matlab function to R
2020-11-09 15:00:07 +01:00
#' @description Performs basic syntax conversion from Matlab to R
2020-11-09 14:30:09 +01:00
#' @param filename name of the file
#' @param saveOutput if `TRUE`, `filename` is overwritten. Defaults to `FALSE`
2020-11-09 15:00:07 +01:00
#' @return text converted to R, printed to screen or replacing input file
2020-11-09 14:30:09 +01:00
#' @author Waldir Leoncio
#' @export
matlab2r <- function(filename, saveOutput = FALSE) {
# Verification
if (!file.exists(filename)) stop("File not found")
# Reading file into R
txt <- readLines(filename)
# Replacing text
2020-11-09 15:00:07 +01:00
txt <- gsub(
pattern = "function (.+)\\s*=\\s*(.+)\\((.+)\\)",
replacement = "\\2 <- function(\\3) { return(\\1)",
x = txt
)
2020-11-09 14:30:09 +01:00
txt <- gsub(";", "", txt)
txt <- gsub("for (.+)=(.+)", "for (\\1 in \\2) {", txt)
txt <- gsub("end", "}", txt)
2020-11-09 15:00:07 +01:00
# TODO: replace forms like (:,:) with [, ]
# TODO: reformat if statements
2020-11-09 14:30:09 +01:00
# Returning converted code
if (!saveOutput) {
return(cat(txt, sep="\n"))
} else {
return(
write.table(
x = txt,
file = filename,
quote = FALSE,
row.names = FALSE,
col.names = FALSE
)
)
}
2020-11-09 15:00:07 +01:00
}