【发布时间】:2015-02-01 06:49:40
【问题描述】:
有没有办法让 foreach() 返回一个命名的 list/data.frame。例如
foo <- list(a = 1, b = 2)
bar <- foreach (x = foo) %do% { x * 2 }
返回list(2, 4)。我希望它返回list(a = 2, b = 4)。
另外,有没有办法从循环体内访问名称?
(我对在 foreach 循环之后分配名称的解决方案不感兴趣。)
问候
【问题讨论】:
-
不确定
foreach是否具有此功能。但是,您可以将循环更改为foreach(i = seq_along(foo)) {x <- foo[[i]]; ...},这将允许您通过names(foo)[i]访问每个元素的名称 -
您也可以使用
x = Map(structure, .Data=lapply(foo, list), names=names(foo))来获取循环内的名称,就像循环使用[而不是[[来访问foo的元素一样。