R for循环遍历多个变量

时间:2015-10-20 09:31:33

标签: r for-loop

在R中循环使用2个向量的惯用方法

for i,j in zip(Is, Js)

R中显而易见的方法是沿着索引

for (idx in seq_along(Is)) {
    i = Is[idx]
    j = Js[idx]

}

只是想知道是否有一种不那么繁琐的方式?

编辑:

我使用for循环进行参数扫描,然后进行绘图。避免for循环的首选方法也很有用。例如,

results = data.table()
for (threshold in c(2,3,4,5)) {
    largeRtn = rtn[abs(rtn)>threshold*volatility]
    results = rbind(results, someAnalysis(largeRtn) )
    qplot(largeRtn, ...)
}

2 个答案:

答案 0 :(得分:2)

这样的东西通常是R样的:

func = function(a, b) {
    return(a*b)
}
a = c(2,3,1,7,8)
b = c(4,6,7,0,1)
mapply(func, a = a, b = b)
[1]  8 18  7  0  8

当然,在这种情况下,可以轻松地进行矢量化:

a * b
[1]  8 18  7  0  8

但是在更复杂的情况下,矢量化可能不是一种选择,那么你可以使用第一种方法。

也许this tutorial我写的可以帮助你。

答案 1 :(得分:2)

我不确定你的python代码是做什么的,但也许foreachiterators包是一个选项:

library(foreach)
library(iterators)

zip <- function(...) iter(obj = expand.grid(...), by = "row")
foreach(d = zip(i = 1:3, j = 5:10), .combine = c) %do% {d[,"i"] * d[,"j"]}
#[1]  5 10 15  6 12 18  7 14 21  8 16 24  9 18 27 10 20 30

当然,如果可能的话,你应该避免循环。