foreach:保持名字

lit*_*ith 10 foreach r

有没有办法让foreach()返回一个命名列表/ data.frame.例如

foo <- list(a = 1, b = 2)
bar <- foreach (x = foo) %do% { x * 2 }
Run Code Online (Sandbox Code Playgroud)

回报list(2, 4).我希望它能回来list(a = 2, b = 4).

另外,有没有办法从循环体内访问名称?

(我对在foreach循环之后分配名称的解决方案不感兴趣.)

问候

asa*_*ica 14

我正在使用你的解决方案,直到我需要使用嵌套的foreach(与%:%运算符).我想出了这个:

foo <- list(a = 1, b = 2)
bar <- foreach (x = foo, .final = function(x) setNames(x, names(foo))) %do% {
    x * 2
    }
Run Code Online (Sandbox Code Playgroud)

诀窍是使用.final参数(在最终结果处应用一次的函数)来设置名称.这样更好,因为它不使用临时变量并且整体更清洁.它适用于嵌套列表,以便您可以保留跨结构的多个层的名称.

请注意,只有当foreach具有参数.inorder=T(这是默认值)时,这才能正常工作.