我是R.的新手。我正在练习lapply()和sapply()函数:lapply()返回list,sapply()返回vector / matrix。现在我不明白为什么lapply()和sapply()与列表有相同的结果?
> x1 <- lapply(list(1:3, 25:29), function(x) {2*x})
> x2 <- sapply(list(1:3, 25:29), function(x) {2*x})
> x1
[[1]]
[1] 2 4 6
[[2]]
[1] 50 52 54 56 58
> x2
[[1]]
[1] 2 4 6
[[2]]
[1] 50 52 54 56 58
> str(x2)
List of 2
$ : num [1:3] 2 4 6
$ : num [1:5] 50 52 54 56 58
> mode(x2)
[1] "list"
之后,我检查了unlist()并返回与向量相同的输入。 很难理解为什么sapply()会返回列表类型。
谢谢。
答案 0 :(得分:5)
如果length
元素的list
不相同,sapply
将不会将其强制转换为矩阵,并且与lapply
我们可以查看?sapply
和?lapply
lapply(X,FUN,...)
sapply(X,FUN,...,simplify = TRUE,USE.NAMES = TRUE)
simplify=TRUE
是将list
等长输出转换为matrix
的广告