使用lapply进行嵌套循环

时间:2013-11-28 00:01:03

标签: r loops lapply

我在lapply中学习了一些R魔法,但还没弄明白如何替换嵌套循环 - 这也可能吗?

这是我的问题,以及嵌套循环解决方案。

monCode <- c('F', 'G', 'H', 'J', 'K', 'M', 'N', 
        'Q', 'U', 'V', 'X', 'Z')
yearRange <- as.character(3:15)
yearRange[as.numeric(yearRange) < 10] <- as.character(paste0("0", yearRange[as.numeric(yearRange) < 10]))

outList <- vector()
for(Yr in yearRange) {
    for (mon in monCode) {
        outList <- c(outList, (paste0("IB", mon, Yr, " Comdty")))
    }
}

我如何使用嵌套的lapply函数而不是嵌套循环?

提前致谢

1 个答案:

答案 0 :(得分:4)

不需要嵌套循环或嵌套lapply。

使用expand.grid创建monCodeyearRange然后do.call(sprintf,...)的所有组合以连接它们

f <- expand.grid(monCode,yearRange)
outList <- do.call(sprintf, c(f, fmt = 'IB%s%s comdty'))