【发布时间】:2011-07-16 20:29:12
【问题描述】:
可能重复:
how to apply a function to every row of a matrix (or a data frame) in R
我想对数据框中的每一行应用一个函数,但是,R 默认将它应用到每一列。否则我该如何强制?
> a = as.data.frame(list(c(1,2,3),c(10,0,6)),header=T)
> a
c.1..2..3. c.10..0..6.
1 1 10
2 2 0
3 3 6
> sapply(a,min)
c.1..2..3. c.10..0..6.
1 0
我想要类似的东西
1 2
2 0
3 3
【问题讨论】:
-
我看到 lapply doc 说它返回一个列表,sapply doc 说它是一个用户友好的版本,它返回一个适当类型的对象。
-
lapply()和sapply()对向量的组件进行操作。该向量可以是原子向量(例如1:10)或列表。对于列表,它将函数应用于列表的每个组件。数据框是列表的一种特殊情况,其中“列”是组件,因此lapply()和sapply()处理数据框的“列”。 -
它没有这么说;它说,“sapply 是 lapply 的用户友好版本,如果合适,默认返回一个向量或矩阵。”