r - 蒙特卡洛的 Set.seed
问题描述
#year 2022
R.100<-runif(n=100, min = 40, max = 65)
R.100
summary(R.100)
R.norm.100<-rnorm(length(R.100), mean = 50, sd=7)
R.norm.100
summary(R.norm.100)
a=0.6
C=100
f<-seq(from=1.10, to=1.18, by=0.005)
B<-NULL
B<-as.data.frame(B)
for(i in 1:length(f)) {
for(R in 1:length(R.norm.100)) {
B[i, "degerler"] <- (R.norm.100[R]-(1-a)*C*f[i]) / R.norm.100[R]
}
}
summary(B)
在运行上述循环函数并计算 B 时,我希望分子中 R 的模拟数在分母中相同。例如,当计算 B 时,如果分子中的 R 模拟为 55,我希望分母中的 R 为 55。
如何为这个函数编写 R 代码?
最后一件事,我想多次重复这个函数,比如 50 次。
你能帮我吗?最好的问候 Zehra Civan
解决方案
当你这样做时:
B[i, "degerler"] <- (R.norm.100[R]-(1-a)*C*f[i]) / R.norm.100[R]
您正在替换每个 R 的计算值。要获得矩阵 B,您可以执行以下操作:
R.norm.100<-rnorm(length(R.100), mean = 50, sd=7)
a=0.6
C=100
f<-seq(from=1.10, to=1.18, by=0.005)
B<-matrix(0,nrow=length(R.norm.100),ncol=length(f))
for(i in 1:length(f)) {
for(R in 1:length(R.norm.100)) {
B[R,i] <- (R.norm.100[R]-(1-a)*C*f[i]) / R.norm.100[R]
}
}
summary(B)
在 R 中,您不需要遍历所有元素,只需将您拥有的函数应用于向量本身。例如:
i=1
result_1 = vector("numeric",length(R))
for(R in 1:length(R.norm.100)) {
result_1[R] <- (R.norm.100[R]-(1-a)*C*f[i]) / R.norm.100[R]
}
result_2 = (R.norm.100-(1-a)*C*f[i]) / R.norm.100
identical(result_1,result_2)
[1] TRUE
因此,您可以通过执行以下操作完全跳过双重 for 循环:
B = sapply(f,function(i)(R.norm.100[R]-(1-a)*C*i) / R.norm.100)
这会给你你需要的结果
推荐阅读
- c# - jQuery AJAX 请求返回 HTML 而不是 JSON 结果(Razor 页面)
- r - 如何以编程方式查找 R 包的数量?
- amazon-web-services - 在 AWS EKS 中使用什么凭证来访问 SNS 等 AWS 服务。
- javascript - ES6 - 从对象数组中删除重复项
- python - 我创建的函数不接受数组作为参数之一
- ios - iOS画外音:关注选定的单元格而不是第一行
- docker - 如何在远程 Google Cloud docker repo 中列出图像(标签)?
- ffmpeg - HLS:读取带有 com.apple.streaming.transportStreamTimestamp PTS 时间标记的 PRIV ID3 标签
- oracle - 查询特定时间
- corda - 访问单个或一小组现金状态时计划的流程失败