【问题标题】:How to update matrix value in R based on comparison of two matrix?如何根据两个矩阵的比较来更新 R 中的矩阵值?
【发布时间】:2019-09-01 07:21:19
【问题描述】:

如何根据两个矩阵的比较生成矩阵。我有(列,行)矩阵A(10,1)和B(10,100)。将矩阵 A 与矩阵 B 的每一行进行比较,如果 B 的值小于 A,则将 B 值更新为 A 的值。

 n.units<-100
 n.option<-10
 A<-rnorm(n.option,1,0.2)
 B<-matrix(rnorm(n.option*n.units,1,0.2)n.col=n.units)
 renew <-function(){Thresholds=obj.value }
 update1 <- apply((Thresholds < obj.value),1,renew)

我是R编程新手,请给一些建议以解决它。

【问题讨论】:

  • 对不起.. 我刚刚编辑了问题。

标签: r matrix


【解决方案1】:

我猜你正在尝试的可以通过pmax 来实现。试试看

pmax(B, A)

您有一个数字向量 A,它与矩阵 B 进行比较。将A 的第一个元素与B 的第一行进行比较,并选择最大值。所有其他行也是如此,因为pmax 将较短的向量循环到较长的向量长度。另请注意,pmax(B, A) 给出的结构与pmax(A, B) 不同,尽管值相同。


为了更容易理解,考虑这个例子

mat <- matrix(1:10, ncol = 5)
mat
#     [,1] [,2] [,3] [,4] [,5]
#[1,]    1    3    5    7    9
#[2,]    2    4    6    8   10

pmax(mat, c(3, 7))

#     [,1] [,2] [,3] [,4] [,5]
#[1,]    3    3    5    7    9
#[2,]    7    7    7    8   10

这里第一行和3比较,第二行和7比较,选择最大值。

【讨论】:

  • 谢谢,我想这就是我需要的。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2016-08-03
  • 2021-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
相关资源
最近更新 更多