Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对嵌套循环使用lappy_R_Loops_Lapply - Fatal编程技术网

R 对嵌套循环使用lappy

R 对嵌套循环使用lappy,r,loops,lapply,R,Loops,Lapply,我一直在学习R中的一些lapply魔法,但还没有弄明白如何替换嵌套循环——这也可能吗 这是我的问题和嵌套循环解决方案 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",

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

这是我的问题和嵌套循环解决方案

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")))
    }
}
如何使用嵌套的lappy函数而不是嵌套的循环来实现这一点


提前感谢

无需嵌套循环或嵌套lappy

使用expand.grid创建monCode和yearRange的所有组合,然后使用do.callsprintf,。。。连接它们

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

不需要嵌套循环或嵌套lappy

使用expand.grid创建monCode和yearRange的所有组合,然后使用do.callsprintf,。。。连接它们

f <- expand.grid(monCode,yearRange)
outList <- do.call(sprintf, c(f, fmt = 'IB%s%s comdty'))
我在函数fmt中得到错误,…:do.call行中的参数太少。我已经能够从paste0IB,f[,1],f[,2],Comdty那里得到一些有用的东西-我对sprintf的理解还不足以解决这个问题。错误是什么?问题是使用列表。。。而不是c。。。。请参阅编辑。+1/已接受。谢谢expand.grid技巧可以消除大多数嵌套循环。我在函数fmt中得到错误,…:do.call行中的参数太少。我已经能够从paste0IB,f[,1],f[,2],Comdty那里得到一些有用的东西-我对sprintf的理解还不足以解决这个问题。错误是什么?问题是使用列表。。。而不是c。。。。请参阅编辑。+1/已接受。谢谢expand.grid技巧可以消除大多数嵌套循环。