0

我在使用 R 来填充矩阵时遇到问题,该矩阵的每一行具有不同的“比例因子”。此时每列都被相同地填充。

我已经尝试了很多方法,但下面我展示了我所做的。我认为我缺少一些基本的东西!

获取 26 个比例因子的列表:

Shape <- 2
x <- seq(0,25,1)

Scale <- NULL
for (i in 1:26){
Scale[i] <- x[i]/(gamma(1+1/Shape))
}

准备矩阵:

size <- length(x)                   ## size of matrix
w.dist <- matrix(
    rep(x,size),
    nrow= size,
    ncol= size,
    byrow= T)

在矩阵的每一行上应用 Weibull 函数(对于每个 x 值(风速))

for (i in 1:26){ 
w.dist[i,] <- apply(w.dist,2,function(x)dweibull(x,Shape,Scale[i]))
}

或者:

w.dist <- matrix(dweibull(x, shape=Shape, scale=Scale), nrow=26, ncol=26, byrow=TRUE)

我无法让任何一种方法起作用。任何帮助都会非常有帮助!

4

1 回答 1

0

在循环

for (i in 1:26){ w.dist[i,] <- apply(w.dist,2,function(x)dweibull(x,Shape,Scale[i])) }

“dweibull”函数不适用于风速值“x”,但适用于包含未定义值的“w.dist”。我尝试了以下方法:

windSpeed <- x
for (i in 1:26){ w.dist[i,] <- dweibull(windSpeed,Shape,Scale[i]) }

然后'w.dist'的行包含合理的值,例如

> w.dist[12,]
 [1] 0.000000000 0.012897797 0.025298144 0.036735430 0.046804881 0.055186204
 [7] 0.061659957 0.066115538 0.068550573 0.069062342 0.067832616 0.065107812
[13] 0.061176637 0.056347379 0.050926813 0.045202234 0.039427649 0.033814593
[19] 0.028527530 0.023683384 0.019354446 0.015573732 0.012341866 0.009634581
[25] 0.007410118 0.005615971
> sum(w.dist[12,])
[1] 0.9842882
于 2015-07-08T13:57:11.250 回答