使用sapply删除for循环

时间:2017-09-21 15:45:44

标签: r

作为我在下面的代码中使用sapply删除for循环的学习练习,我试图使用sapply返回最小的向量:

f3 <- function(nv) {
    min(nv)
}

myv = c(1:10)
y <- sapply(myv, f3)
y

正如预期的那样,不是将min函数应用于整个fector以返回1,而是为返回1 2 3 4 5 6 7 8 9 10的向量中的每个元素计算min。

如何使用sapply处理整个向量,因此返回1?

1 个答案:

答案 0 :(得分:4)

您可以将min应用于整个矢量

myv <- 1:10
min(myv)
#> [1] 1

min将返回您提供的任意数量参数的最小值。如果您的数据结构比数据框之类的矢量更复杂,并且您希望每列的最小值比使用sapply要小,尽管还有其他选择。以下是使用sapply可能有意义的示例:

mydf <- data.frame(x = 1:10, y = 11:20, z = 21:30)
min(mydf)
#> [1] 1
sapply(mydf, min)
#>  x  y  z 
#>  1 11 21