返回行的最小值

时间:2017-12-29 03:23:02

标签: r dplyr

我试图找到数据库中每行的最小值

V1    V2   V3    V4     V5  
3      2    4    10     11

我尝试了两种不同的方法来获得最小值

apply(temp[,],1,min)

apply(temp, 1, FUN = min)

我知道这些基本上是一回事。而不是得到2的结果,我得到10的结果。如果我删除10,结果变为11.我只想2的结果并且不确定如何获得这个。

3 个答案:

答案 0 :(得分:3)

我建议您的数据实际上是字符(或可能是因素),而不是数字。以下代码应该提供您想要的结果:

df <- data.frame(V1=c("3"), V2=c("2"), V3=c("4"), V4=c("10"), V5=c("11"))
apply(df, 1, FUN = function(x) { min(as.numeric(x)) })

10作为最小值出现的原因是因为 是最小值,至少按字典顺序排列。通过将该数据转换为数字类型,我们得到了预期的结果。

Demo

答案 1 :(得分:1)

我们可以pmin

do.call(pmin, c(df, list(na.rm = TRUE)))

答案 2 :(得分:0)

我已经阅读了上面的评论,说明这是不可重现的,上面的答案指出了数据类型的问题。我确保数据框由不是因素的数值组成。实际上结果是2.因子数据类型可能会混淆输出。

df <- data.frame(V1=c(3), V2=c(2), V3=c(4), V4=c(10), V5=c(11));
apply(df,1,min)