R Under development (unstable) (2024-05-07 r86527 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > require("RMVL") Loading required package: RMVL > > M3<-mvl_open("test2.mvl", append=TRUE, create=TRUE) > > L<-list() > > df<-data.frame(x=1:1e5, y=rnorm(1e5), s=rep(c("a", "b"), 5e4), b=rnorm(1e5)<0.5) > L[["x"]]<-mvl_write_object(M3, df) > > aa<-array(rnorm(10000), c(10, 50, 20)) > L[["y"]]<-aa > > mm<-matrix(rnorm(10000), 10, 1000) > L[["z"]]<-mm > > LL2<-as.list(rnorm(10000)) > names(LL2)<-paste("x", 1:10000, sep="") > L[["LL2"]]<-LL2 > > L[["description"]]<-"Example of large data frame" > mvl_write_object(M3, L, "test_object") > > LM1<-lm(rnorm(100)~runif(100)) > mvl_write_serialized_object(M3, LM1, "LM1") > > mvl_close(M3) > > M3<-mvl_open("test2.mvl") > print(names(M3)) [1] "test_object" "LM1" > L2<-M3["test_object"] > > N<-dim(df)[1] > > compare_df<-function(x, y) { + if(length(dim(x))!=length(dim(y)))return(FALSE) + if(any(dim(x)!=dim(y)))return(FALSE) + if(any(names(x)!=names(y)))return(FALSE) + if(dim(x)[2]>0) { + for(i in 1:(dim(x)[2])) { + if(any(x[,i]!=y[,i]))return(FALSE) + } + } + return(TRUE) + } > > if(!compare_df(df, L2[["x"]][,])) { + cat("test1a failed\n") + print(attributes(df)) + print(attributes(L2[["x"]][,])) + cat("-----------\n") + } > if(!compare_df(df[1:20,], L2[["x"]][1:20,]))cat("test1b failed\n") > > if(!compare_df(df[(1:N) %% 5==0,], L2[["x"]][(1:N) %% 5==0,]))cat("test2 failed\n") > > if(!compare_df(df[(1:N) %% 5==0,], L2[["x"]][(1:N)[(1:N) %% 5==0],]))cat("test3 failed\n") > > if(!compare_df(df[(1:N) %% 5==0, c("y", "s")], L2[["x"]][(1:N)[(1:N) %% 5==0], c("y", "s")]))cat("test4 failed\n") > > if(!identical(df[(1:N) %% 5==0, c("s")], L2[["x"]][(1:N)[(1:N) %% 5==0], c("s")]))cat("test5 failed\n") > > if(!compare_df(df[(1:N) %% 5==0, 2:3], L2[["x"]][(1:N)[(1:N) %% 5==0], 2:3]))cat("test6 failed\n") > > if(!isTRUE(all.equal(aa, L2[["y"]][])))cat("test7 failed\n") > if(!compare_df(mm, L2[["z"]][])) { + cat("test8 failed\n") + print(all.equal(mm, L2[["z"]][])) + print(attributes(mm)) + print(attributes(L2[["z"]][])) + cat("-----------\n") + } > > if(!isTRUE(all.equal(aa[c(2,3,5),,], L2[["y"]][c(2,3,5),,])))cat("test9 failed\n") > if(!isTRUE(all.equal(aa[,c(2,3,5),], L2[["y"]][,c(2,3,5),])))cat("test10 failed\n") > if(!isTRUE(all.equal(aa[,,c(2,3,5)], L2[["y"]][,,c(2,3,5)])))cat("test11 failed\n") > if(!isTRUE(all.equal(aa[c(2,3,5),c(6,10,20),c(7,3,5)], L2[["y"]][c(2,3,5),c(6,10,20),c(7,3,5)])))cat("test12 failed\n") > > if(!isTRUE(all.equal(mm[c(2,3,5),], L2[["z"]][c(2,3,5),])))cat("test13 failed\n") > if(!isTRUE(all.equal(mm[,c(2,3,5)], L2[["z"]][,c(2,3,5)])))cat("test14 failed\n") > if(!isTRUE(all.equal(mm[c(2,3,5),c(6,10,20)], L2[["z"]][c(2,3,5),c(6,10,20)])))cat("test15 failed\n") > > if(!isTRUE(all.equal(LL2, L2[["LL2"]][]))) { + cat("test16 failed\n") + print(all.equal(LL2, L2[["LL2"]][])) + cat("-----------\n") + } > > idx1<-20:2001 > if(!isTRUE(all.equal(LL2[idx1], L2[["LL2"]][idx1]))) { + cat("test17 failed\n") + print(all.equal(LL2[idx1], L2[["LL2"]][idx1])) + cat("-----------\n") + } > > if(!isTRUE(all.equal(LL2[5], L2[["LL2"]][5]))) { + cat("test18 failed\n") + print(all.equal(LL2[5], L2[["LL2"]][5])) + print(LL2[5]) + print(L2[["LL2"]][5]) + cat("-----------\n") + } > > if(!identical(LM1, mvl2R(M3["LM1"]))) { + cat("test19 failed\n") + print(all.equal(LM1, mvl2R(M3["LM1"]))) + cat("-----------\n") + } > > # TODO: > # Testing of [,raw=TRUE] is complicated because R's as.raw() function is only meant for conversion of characters, > # while MVL raw mode only returns raw vectors when there is no equivalent R vector (such as the case of floats and INT64) > # > # if(!isTRUE(all.equal(as.raw(aa[c(2,3,5),c(6,10,20),c(7,3,5)]), L2[["y"]][c(2,3,5),c(6,10,20),c(7,3,5),raw=TRUE]))){ > # cat("test19 failed\n") > # print(all.equal(as.raw(aa[c(2,3,5),c(6,10,20),c(7,3,5)]), L2[["y"]][c(2,3,5),c(6,10,20),c(7,3,5),raw=TRUE])) > # print(as.raw(aa[c(2,3,5),c(6,10,20),c(7,3,5)])) > # print(L2[["y"]][c(2,3,5),c(6,10,20),c(7,3,5),raw=TRUE]) > # cat("-----------\n") > # } > > print(mvl_object_stats(L2[["x"]])[c("length", "type")]) $length [1] 4 $type [1] 100 > print(mvl_object_stats(L2[["y"]])[c("length", "type")]) $length [1] 10000 $type [1] 5 > print(mvl_object_stats(L2[["z"]])[c("length", "type")]) $length [1] 10000 $type [1] 5 > print(mvl_object_stats(L2[["LL2"]])[c("length", "type")]) $length [1] 10000 $type [1] 100 > > mvl_close(M3) > > unlink("test2.mvl") > > > proc.time() user system elapsed 0.95 0.07 1.03