Dear list!
 
I have question of 'correct function formation'. Which function (fun1 or fun2; 
see below) is written more correctly? Using ''structure'' as output or creating 
empty ''data.frame'' and then transform it as output? (fun1 and fun1 is just 
for illustration).
 
Thanks a lot, OV
 
code:
input <- data.frame(x1 = rnorm(20), x2 = rnorm(20), x3 = rnorm(20))
fun1 <- function(x) {
    ID <- NULL; minimum <- NULL; maximum <- NULL
    for(i in seq_along(names(x)))   {
        ID[i]       <- names(x)[i]
          minimum[i]  <- min(x[, names(x)[i]])
            maximum[i]  <- max(x[, names(x)[i]])
                                    }
    output <- structure(list(ID, minimum, maximum), row.names = 
seq_along(names(x)), .Names = c("ID", "minimum", "maximum"), class = 
"data.frame")
    return(output)
}
fun2 <- function(x) {
    output <- data.frame(ID = character(), minimum = numeric(), maximum = 
numeric(), stringsAsFactors = FALSE)
    for(i in seq_along(names(x)))   {
        output[i, "ID"] <-names(x)[i]
        output[i, "minimum"]  <- min(x[, names(x)[i]])
        output[i, "maximum"]  <- max(x[, names(x)[i]])
                                    }
    return(output)
}

fun1(input)
fun2(input)

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to