在R中填充矩阵而不用于循环

时间:2015-01-28 17:43:05

标签: r matrix

我是R的初学者,我知道我做的方式是错误和缓慢的。我想填写矩阵,我需要计算每个项。我试过两个for循环,这是代码。你知道更好的方法吗?

KernelGaussianMatrix <- function(x,delta){
  Mat = matrix(0,nrow=length(x),ncol=length(x))
  for (i in 1:length(x)){
   for (j in 1:length(x)){
     Mat[i,j] = KernelGaussian(x[i],x[j],delta)   
   } 
  } 
  return(Mat)
}

THX

2 个答案:

答案 0 :(得分:2)

您想要使用函数outer,如下所示:

Mat <- outer(x,x,KernelGaussian,delta)

请注意,outer中第三个参数之后的任何参数都作为附加参数提供给作为outer的第三个参数提供的函数

答案 1 :(得分:0)

如果需要for循环来生成值,那么方法就可以了。

如果值已在数组values中,您可以尝试mat = matrix(values, nrow=n, ncol=p)或类似的内容。