没有for循环的R中的填充矩阵

Filling matrix in R without for loops

我是 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)
}

感谢

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

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

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

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

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

的第三个参数提供的函数