r中apply和sapply的区别
时间: 2023-12-14 16:39:52 浏览: 145
在 R 语言中,`apply` 和 `sapply` 都可以用来对数据进行操作,但是它们的用法和返回值有所不同。
`apply` 函数的使用格式为:
```r
apply(X, MARGIN, FUN, ...)
```
其中,`X` 是要操作的矩阵或数组,`MARGIN` 表示操作的维度(1 表示行,2 表示列),`FUN` 是要对每行或每列执行的函数。`apply` 函数的返回值是一个数组或矩阵,其中每行或每列都是 `FUN` 函数的返回值。
例如,下面的例子将对一个矩阵的每一列求和:
```r
mat <- matrix(1:6, nrow = 2)
apply(mat, 2, sum)
```
`sum` 函数将作用于每一列,返回结果为:
```
[1] 3 7 11
```
`sum` 函数对每列求和,因此返回了一个长度为 3 的向量。
`sapply` 函数的使用格式为:
```r
sapply(X, FUN, ..., simplify = TRUE)
```
其中,`X` 是要操作的数据,`FUN` 是要对每个元素执行的函数,`simplify` 参数表示是否要将返回值简化为向量或矩阵。
例如,下面的例子将对一个列表中的每个元素进行求和:
```r
lst <- list(a = 1:3, b = 4:6, c = 7:9)
sapply(lst, sum)
```
`sum` 函数将作用于每个元素,返回结果为:
```
a b c
6 15 24
```
`sapply` 函数对每个元素求和,因此返回了一个长度为 3 的向量。如果 `simplify` 参数设置为 `FALSE`,则返回一个列表。
因此,`apply` 主要用于矩阵和数组的操作,而 `sapply` 则更适用于向量和列表的操作。另外,`apply` 函数返回的是矩阵或数组,而 `sapply` 函数返回的是向量或列表。
阅读全文