将新列变为行最大值

时间:2017-09-10 09:24:37

标签: r

 x <- head(iris)
> x
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

如果我想将一个新列变为x,名为&#34; maximum_num&#34;价值5.1,4.9,4.7等我该怎么做? (我意识到糟糕的例子,因为所有人都是Sepal.Length在这里,但如果每次最大来自不同的cols)

> which.max(x)
Error in which.max(x) : (list) object cannot be coerced to type 'double'

我想我可以使用which.max但不知道如何编织它。

我也试过

x %>% mutate(maxmax = summarise_all(select(., -Species), funs(max)))
Error in `[[<-.data.frame`(`*tmp*`, col, value = list(Sepal.Length = 5.4,  : 
  replacement has 1 row, data has 6

如何附加包含最大行方式值的新列?

是否有dplyr esque方式?也很满意基地r。

2 个答案:

答案 0 :(得分:2)

我们可以使用矢量化pmax

x$maxma <- do.call(pmax, iris[-5])

使用dplyr

x %>% 
      mutate(maxma = do.call(pmax, .[-5]))

答案 1 :(得分:1)

您可以在基础包中使用apply

x$maxma=apply(iris[-5],1,max)