例如:
m <- matrix(c(1:9),3,3)
每列的最大值将是...
n <- matrix(c(3,6,9),1,3)
然后,我如何执行一个操作,使输出是一个3x3矩阵,其值为:第一列中的0.33,0.66,1 (第一列除以3) 0.66,0.83,6第二列中的0.66,0.83,6(第二列除以6)第三列中的0.77,0.88,9(第三列除以9)。
发布于 2020-04-28 02:05:37
我们可以通过'm‘的col来复制'n’
m/n[col(m)]
# [,1] [,2] [,3]
#[1,] 0.3333333 0.6666667 0.7777778
#[2,] 0.6666667 0.8333333 0.8888889
#[3,] 1.0000000 1.0000000 1.0000000发布于 2020-04-27 23:14:21
使用apply
apply(m, 2, function(x) x / max(x))
[,1] [,2] [,3]
[1,] 0.3333333 0.6666667 0.7777778
[2,] 0.6666667 0.8333333 0.8888889
[3,] 1.0000000 1.0000000 1.0000000这是你要找的东西吗?
发布于 2020-04-27 23:21:26
使用base R,您可以使用pmax,如下所示
> t((u<-t(m))/do.call(pmax,data.frame(u)))
[,1] [,2] [,3]
[1,] 0.3333333 0.6666667 0.7777778
[2,] 0.6666667 0.8333333 0.8888889
[3,] 1.0000000 1.0000000 1.0000000https://stackoverflow.com/questions/61462067
复制相似问题