有没有办法让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(这是默认值)时,这才能正常工作.