没有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
的第三个参数提供的函数
我是 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