Search code examples
rparameter-passingsapply

How do I use arguments of a function when using sapply?


I have a dataset which I created by column binding using the cbindX function from the gdata package. This function allows me to bind columns with different numbers of rows. So, NA's are introduced when there are no values in a particular column. Now, I want to calculate the standard deviation for each column. I tried using

sapply(dataset,sd)

This returns the standard deviation for the column having all rows with values and NA for the columns having fewer rows. I tried using the na.rm argument with the sd function:

sapply(dataset,sd(na.rm=T))

and got the error message

Error in is.data.frame(x) : argument "x" is missing, with no default

For example:

  firstcol <- matrix(c(1:150),ncol=1)
    secondcol <- matrix(c(1:300),ncol=1)
     thirdcol <- matrix(c(1:450),ncol=1)
      fourthcol <- matrix(c(1:600),ncol=1)
        fifthcol <- matrix(c(1:30),ncol=1)
         sixthcol <- matrix(c(1:30),ncol=1)
          seventhcol <- matrix(c(1:30),ncol=1)      


library(gdata)
  allcolscomb <- data.frame(cbindX   (firstcol,secondcol,thirdcol,fourthcol,fifthcol,sixthcol,seventhcol))      

 names(allcolscomb) <- c("1stcol","2ndcol","3rdcol","4thcol","5thcol","6thcol","7thcol")      


        sapply(allcolscomb,sd)

      sapply(allcolscomb,sd(na.rm=T))

How can I compute standard deviation using the sapply function?


Solution

  • You should read ?sapply manual. Below example of sapply with some extra arguments:

    sapply(allcolscomb, sd, na.rm=TRUE)
    sapply(allcolscomb, function(x) sd(x, na.rm=TRUE))