R: sapply 中的父赋值运算符
R: Parent assignment operator in sapply
考虑通过以下代码创建的二级列表:
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 循环是否有潜在的速度提升?
我倾向于在这种情况下使用 for-loop
。它更清晰并且 sapply
不会加快它的速度 AFAIK,因为 sapply
只是引擎盖下的 for-loop
的特例。有关详细信息,请参阅 。
例如:
for (i in s) a[[i]]$field3 <- 5 - i
考虑通过以下代码创建的二级列表:
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 循环是否有潜在的速度提升?
我倾向于在这种情况下使用 for-loop
。它更清晰并且 sapply
不会加快它的速度 AFAIK,因为 sapply
只是引擎盖下的 for-loop
的特例。有关详细信息,请参阅
例如:
for (i in s) a[[i]]$field3 <- 5 - i