gpt4 book ai didi

r - R 中的两个 for 循环

转载 作者:行者123 更新时间:2023-12-04 04:51:30 25 4
gpt4 key购买 nike

我想按照以下公式从每月值模拟每日值:
V(d)=V(m)*(1+噪声),噪声呈正态分布,均值为0,标准差为0.18)

我在名为 wind.m 的 12x1 矩阵中有每月值,在另一个名为 day.I 的 12x1 矩阵中每个月有天数。我使用两个 for 循环:

for (i in (1:12)) {
for (j in (1:12)){
A<-wind.m[i,]*(1+rnorm(day[j,],0,0.18))
}
print(A)
}

此代码的结果模拟了 12 组 31 个每日值,这是错误的(2 月有 28 天,4 月、6 月有 30 天等)我不知道如何修复我的代码。

以下是使用的数据:
> wind.m
[,1]
[1,] 2.78
[2,] 2.93
[3,] 3.09
[4,] 3.11
[5,] 3.44
[6,] 3.44
[7,] 3.71
[8,] 3.86
[9,] 4.05
[10,] 4.08
[11,] 4.22
[12,] 4.30
> day
[,1]
[1,] 31
[2,] 28
[3,] 31
[4,] 30
[5,] 31
[6,] 30
[7,] 31
[8,] 31
[9,] 30
[10,] 31
[11,] 30
[12,] 31

最佳答案

您可以省略循环并解决您的问题,并通过三个简单的步骤了解有关 R 向量化的知识。

设置:

wind.m <- c(2.78, 2.93, 3.09, 3.11, 3.44, 3.44, 
3.71, 3.86, 4.05, 4.08, 4.22, 4.30)
day <- c(31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31)

然后使用 rep将您的每月收入扩展为一年的每日值(value)。
day_means <- rep(wind.m, times = day)

然后生成您的模拟值。
A <- rnorm(length(day_means), mean = day_means , sd=0.18) 

A 是您的模拟数据。

关于r - R 中的两个 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com