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

三世轮回 提交于 2019-12-02 04:35:31

问题


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?


回答1:


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))



回答2:


Try this.

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

in the apply family functions the syntax is (data, fun, ...). The three dots are "ellipsis", they are there to host the arguments of the function passed to the apply's function.



来源:https://stackoverflow.com/questions/30037649/how-do-i-use-arguments-of-a-function-when-using-sapply

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!