Apply a function to each row in a data frame in R
Possible Duplicate:
how to apply a function to every row of a matrix (or a data frame) in R
R - how to call apply-like function on each row of dataframe with multiple arguments from each row of the df
我想将一个函数应用于数据框中的每一行,但是,R默认将它应用于每一列。 我怎么强迫它呢?
1 2 3 4 5 6 7 8 9
| > 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 |
我想要类似的东西
-
为什么你认为你需要将sapply用于data.frames?
-
我看到lapply doc说它返回一个列表,而sapply doc说它是一个用户友好的版本,它返回一个相应类型的对象。
-
lapply()和sapply()对向量的组件进行操作。 该向量可以是原子向量(例如1:10)或列表。 对于列表,它将该函数应用于列表的每个组件。 数据框是列表的特殊情况,其中"列"是组件,因此lapply()和sapply()在数据帧的"列"上工作。
-
它没有说; 它说,"sapply是一个用户友好版本的lapply默认返回一个向量或矩阵,如果合适的话。"
-
一定要喜欢R文档... smh
你想要apply(参见文档)。 apply(var,1,fun)将应用于行,apply(var,2,fun)将应用于列。
1 2
| > apply(a,1,min)
[1] 1 0 3 |
-
如果我想从给定列中获得最小值,该怎么办? 第2栏。
-
@Selvam,min(a[,2]) - 但您应该阅读一些介绍性的R材料(例如cran.r-project.org/doc/manuals/R-intro.html#Array-indexing) - 这是一个很好的 基本问题。
-
这并不能完全回答原始问题。 apply()将尝试将data.frame转换为矩阵(请参阅帮助文档)。 如果由于混合数据类型而没有正常转换,我不太确定会导致什么结果。
-
@SheaParkes如果您不需要函数中的字符串,只需执行apply(a [NumericColNames],1,min)。
-
@SheaParkes我相信它会将所有数据类型转换为"最小公分母",这通常最终只是字符。