R:sapply中的父赋值运算符

问题描述 投票:1回答:1

考虑以下代码创建的两级列表:

a = list()
s = seq(1,5)
for (i in s) {
  a[[i]] = list(field1 = i, field2 = letters[i])
}

假设我想在每个子列表中添加第三个元素“field3”,并使用sapply(..)和父赋值运算符的以下组合来执行此操作:

sapply(s, function(x) a[[x]]$field3 <<- 5 - x)

这是危险还是被视为滥用父母赋值运算符?推荐的替代方案是什么?使用这个sapply语句而不是for-loop是否有潜在的速度提升?

r assign sapply
1个回答
1
投票

在这种情况下,我倾向于使用for-loops。它更清晰,sapply不会加速AFAIK,因为sapply只是引擎盖下的for-loop的一个特例。有关详细信息,请参阅here

e.f.:

for (i in s) a[[i]]$field3 <- 5 - i
© www.soinside.com 2019 - 2024. All rights reserved.