On 11 August 2015 at 02:09, Glenn Schultz wrote:
| All,
| Is my function just plain wrong or is it just programming style?  I use 
connections because SODA (software for data analysis) recommends using 
connections when working with serialized files.  

Nothing wrong with connections. Many of us use them.

| First, after researching the use of return() - following Joshua's comment and 
others I found a post on SO regarding return(). 
http://stackoverflow.com/questions/11738823/explicitly-calling-return-in-a-function-or-not

Let's try once more. The function foo()

    foo <- function() {
       x <- 2
       return(x)
       x <- 3
    }

will return what value? Ie what does 'print(foo())' show?

| Second, Hadley's point regarding the use of RDS in gz function being a little 
strange. Following the help files the function is fashioned after the following 
which I found in R help files:

IIRC what Hadley was trying to say what you do _not_ need to compress before
inserting into a rds file as the rds file format compresses by default.

In other words compression comes for free, and effortlessly so.

Hth,  Dirk

| ## Less convenient ways to restore the object
| ## which demonstrate compatibility with unserialize()
| con <- gzfile("women.rds", "rb")
| identical(unserialize(con), women)
| close(con)
| con <- gzfile("women.rds", "rb")
| wm <- readBin(con, "raw", n = 1e4) # size is a guess
| close(con)
| identical(unserialize(wm), women)
| 
| With respect to the first, I understand why my function would be considered 
"buggy" - that can be fixed. It is the case, generally speaking, one does not 
need return() when programming in R; it is a functional language.  However, 
some use return() and one finds return(value) in the R help files.  Is it a 
strict no-no to use return()? 
| 
| With respect to the second, The function can be refactored and reduced to 
readRDS().  My question, is using gz file overkill or just plain wrong? 
| What is considered "best practice"?
| 
| -Glenn
| 
| 
| On Aug 09, 2015, at 09:04 AM, Joshua Ulrich <josh.m.ulr...@gmail.com> wrote:
| 
| On Sun, Aug 9, 2015 at 8:59 AM, Glenn Schultz <glennmschu...@me.com> wrote:
| Hi All,
| 
| I use connections to open and close data folders needed by my package.
| After each function closes I get the following warnings (depending on the
| connection that has been opened).
| 
| 10: closing unused connection 3
| 
(/Library/Frameworks/R.framework/Versions/3.2/Resources/library/BondLab/BondData/bondlabMBS4.rds)
| 
| Below is the connection function that is related to the above warning:
| 
| 
#------------------------------------------------------------------------------------
| #' A connection function to BondData calling MBS cusps
| #'
| #' Opens a connection to the BondData folder to call MBS cusip data
| #' @param MBS.id A character string the MBS.id or cusip number current
| MBS.id is supported
| #' @export
| MBS <- function(MBS.id = "character"){
| MBS.Conn <- gzfile(description = paste(system.file(package
| = "BondLab"),
| "/BondData/", MBS.id, ".rds", sep = ""), open
| = "rb")
| MBS <- readRDS(MBS.Conn)
| return(MBS)
| close.connection(MBS.Conn)
| }
| 
| I have googled this warning and it seems to be triggered when a function
| terminates and the connection is open. But, I think the connection function
| closes the connection once the object is returned. What am I doing wrong?
| 
| Your call to return() exits the function, so the close.connection()
| call is never evaluated. Considering using on.exit() to close the
| connection, since it will close the connection regardless of how the
| function exits (e.g. because of an error).
| 
| -Glenn
| ______________________________________________
| R-package-devel@r-project.org mailing list
| https://stat.ethz.ch/mailman/listinfo/r-package-devel
| 
| 
| 
| -- 
| Joshua Ulrich | about.me/joshuaulrich
| FOSS Trading | http://www.fosstrading.com
| ______________________________________________
| R-package-devel@r-project.org mailing list
| https://stat.ethz.ch/mailman/listinfo/r-package-devel

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to