R 查找每行的最大值并规范化为此值

R 查找每行的最大值并规范化为此值,r,R,是否有一种方法可以根据每行的最大值(最好是dplyr)来规范化数据帧的多行 在iris中,我想找到Sepal.length、Sepal.width、Petal.length和Petal.width列每行的最大值。然后我想把每个值除以这个最大值,得到一个从0到1的范围。我希望能够给出一系列列,通过这些列可以找到最大值,最好不必直呼其名 产出目标: > iris Sepal.Length Sepal.Width Petal.Length Petal.Width Species 5.1

是否有一种方法可以根据每行的最大值(最好是dplyr)来规范化数据帧的多行

iris
中,我想找到Sepal.length、Sepal.width、Petal.length和Petal.width列每行的最大值。然后我想把每个值除以这个最大值,得到一个从0到1的范围。我希望能够给出一系列列,通过这些列可以找到最大值,最好不必直呼其名

产出目标:

> iris
Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
5.1          3.5         1.4          0.2            setosa

> iris.normalized
Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            3.5/5.1     1.4/5.1      0.2/5.1        setosa

我尝试使用
max
功能,但没有效果。我很高兴能得到任何帮助。

使用
base R
,用
pmax
计算每行的最大值,然后用感兴趣的列除以以进行缩放

iris[1:4] <-  iris[1:4]/do.call(pmax, iris[1:4])

iris[1:4]谢谢,这确实有效。我不知道如何将其导入dplyr块,但这现在不那么重要了。@Joram您可以尝试通过
iris%%>%select_if(is.numeric)%%>%do.call(pmax,.%>%as_tible%%>%map2_-df(iris[1:4],'/')%%>%bind_-cols(,iris[setdiff(names(iris),names()])