【问题标题】:How do I use arguments of a function when using sapply?使用 sapply 时如何使用函数的参数?
【发布时间】:2015-07-14 06:46:58
【问题描述】:

我有一个数据集,它是使用 gdata 包中的 cbindX 函数通过列绑定创建的。此功能允许我绑定具有不同行数的列。因此,NA 是在特定列中没有值时引入的。现在,我想计算每列的标准偏差。我尝试使用

sapply(dataset,sd)

这将返回所有行都有值的列的标准偏差,NA 则返回具有较少行的列。我尝试将na.rm 参数与sd 函数一起使用:

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

并收到错误消息

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

例如:

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

如何使用sapply 函数计算标准差?

【问题讨论】:

    标签: r parameter-passing sapply


    【解决方案1】:

    试试这个。

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

    在 apply 系列函数中,语法为 (data, fun, ...)。这三个点是“省略号”,它们用于承载传递给 apply 函数的函数参数。

    【讨论】:

    • 这已发布在答案中。与其发布相同的答案,请考虑评论和/或支持较早的答案。
    【解决方案2】:

    您应该阅读?sapply 手册。下面是带有一些额外参数的 sapply 示例:

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

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多