在R中生成向量矩阵并搜索最优

时间:2013-09-02 09:33:05

标签: r data-structures for-loop mathematical-optimization

一个基本问题:我为此道歉。 在R中,我想生成一个包含2个索引的数据结构x,让我们说ij,s.t。 (伪代码)

for (i in 1:10){
  for (j in 1:20){
    x[i,j] <- c(i+j,j-i^2)
  }
}

即。 x的每个元素都是具有2个分量的向量。此外,我想在x中搜索 找出哪对i,j给出j-i^2的最大值;这应该在上面的双for中完成。你能给我一些提示吗?我感谢你们所有人。

1 个答案:

答案 0 :(得分:1)

您可以使用outer完成此操作。从您的问题中不清楚您是将ij视为绝对值还是某种索引向量。我假设它们是向量的索引x

set.seed(1) 
x <- runif(20) 
matm <- outer( x[1:20] , (x[1:10])^2 , `-` )
matp <- outer( x[1:10] , x[1:20] , `+` )

head( cbind( i_plus_j = c(matm) , j_minus_i_sq = c(matp) ) )
#      i_plus_j j_minus_i_sq
#[1,] 0.1950138    0.5310173
#[2,] 0.3016290    0.6376326
#[3,] 0.5023585    0.8383620
#[4,] 0.8377129    1.1737165
#[5,] 0.1311871    0.4671906
#[6,] 0.8278948    1.1638983


which( matm == max( matm ) , arr.ind = TRUE  )
#     row col
#[1,]  18  10