for i = 1:nInitialVectors(1) RQfval(i) = RQobjectiveFunction(initialTargetVectors(i,:), 1, y, THETA, empiricalQuantile); end如何用R语言改写这段代码
时间: 2024-10-07 13:08:30 浏览: 30
matlab编程幻灯片-1完整.pptx
在R语言中,可以使用`for`循环或者更推荐的`vectorize`函数结合`mapply`或者`Map`函数来实现类似的功能。以下是两种改写方式:
**使用for循环:**
```r
nInitialVectors <- length(initialTargetVectors)
RQfval <- numeric(nInitialVectors)
for (i in 1:nInitialVectors) {
RQfval[i] <- RQobjectiveFunction(initialTargetVectors[i, ], 1, y, THETA, empiricalQuantile)
}
```
这里假设`initialTargetVectors`是一个矩阵,`i`代表行索引。
**使用mapply或Map(更高效,适用于`RQobjectiveFunction`可以并行计算):**
```r
library(parallel) # 如果有安装,导入parallel包
RQfval <- mapply(RQobjectiveFunction, initialTargetVectors, rep(1, nInitialVectors), y, THETA, empiricalQuantile)
# 或者
RQfval <- Map(RQobjectiveFunction, initialTargetVectors, rep(1, nInitialVectors), y, THETA, empiricalQuantile)
```
这将利用多核处理器并行计算,提升效率。`mapply`适合简单的一对一映射,`Map`则来自`purrr`包,提供更简洁的语法。
阅读全文