update plotting code and makefile
This commit is contained in:
80
simulations/RemembR/R/RemembeR.R
Normal file
80
simulations/RemembR/R/RemembeR.R
Normal file
@@ -0,0 +1,80 @@
|
||||
library(filelock)
|
||||
|
||||
init.remember <- function(){
|
||||
|
||||
if(exists("r") == FALSE){
|
||||
if(file.exists(remember.file)){
|
||||
if(!exists("remember.file.lock"))
|
||||
init.file.lock()
|
||||
lck <- lock(remember.file.lock, exclusive = FALSE)
|
||||
r <<- readRDS(remember.file)
|
||||
unlock(lck)
|
||||
} else {
|
||||
r <<- list()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
remember.file <<- "remembr.RDS"
|
||||
init.file.lock <- function(){
|
||||
remember.file.lock <<- paste0(remember.file,"_LOCK")
|
||||
}
|
||||
|
||||
remember.prefix <<- ""
|
||||
|
||||
|
||||
change.remember.file <- function(file,clear=FALSE){
|
||||
if(!clear){
|
||||
remember.file <<- file
|
||||
init.file.lock()
|
||||
save.remember()
|
||||
} else {
|
||||
remember.file <<- file
|
||||
rm(r,pos=globalenv())
|
||||
init.remember()
|
||||
}
|
||||
}
|
||||
set.remember.prefix <- function(prefix){
|
||||
remember.prefix <<- prefix
|
||||
}
|
||||
|
||||
load.if.exists <- function(){
|
||||
if(file.exists(remember.file)){
|
||||
if(!exists("remember.file.lock"))
|
||||
init.file.lock()
|
||||
lck <- lock(remember.file.lock, exclusive = FALSE)
|
||||
r <<- readRDS(remember.file)
|
||||
unlock(lck)
|
||||
} else {
|
||||
r <<- list()
|
||||
}
|
||||
}
|
||||
|
||||
remember <- function(var,name,lock=T){
|
||||
|
||||
init.remember()
|
||||
|
||||
load.if.exists()
|
||||
|
||||
if(remember.prefix == ""){
|
||||
r[[name]] <<- var
|
||||
} else {
|
||||
if(is.null(r[[remember.prefix]])){
|
||||
r[[remember.prefix]] <<- list()
|
||||
}
|
||||
r[[remember.prefix]][[name]] <<- var
|
||||
}
|
||||
|
||||
save.remember()
|
||||
}
|
||||
|
||||
save.remember <- function(lock=T){
|
||||
if(!exists("remember.file.lock"))
|
||||
init.file.lock()
|
||||
|
||||
lck <- lock(remember.file.lock, exclusive=TRUE)
|
||||
saveRDS(r,file=remember.file)
|
||||
unlock(lck)
|
||||
}
|
||||
init.remember()
|
||||
3
simulations/RemembR/R/run_tests.sh
Executable file
3
simulations/RemembR/R/run_tests.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!Rscript
|
||||
library(testthat)
|
||||
testthat::test_dir('tests')
|
||||
25
simulations/RemembR/R/tests/test_RemembeR.R
Normal file
25
simulations/RemembR/R/tests/test_RemembeR.R
Normal file
@@ -0,0 +1,25 @@
|
||||
library(testthat)
|
||||
library(data.table)
|
||||
source("../RemembeR.R")
|
||||
test_that("single numbers",{
|
||||
remember(1,"one")
|
||||
expect_equal(r$one,1)
|
||||
}
|
||||
)
|
||||
|
||||
test_that("prefixes",{
|
||||
set.remember.prefix("prefix")
|
||||
remember(2,"two")
|
||||
expect_equal(r$prefix$two,2)
|
||||
expect_equal(r$one,1)
|
||||
}
|
||||
)
|
||||
|
||||
test.dt <- as.data.table(data("mtcars"))
|
||||
|
||||
test_that("data.tables",{
|
||||
set.remember.prefix("")
|
||||
remember(test.dt, 'test.dt')
|
||||
expect_equal(r$test.dt,test.dt)
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user