R:sapply中的父分配运算符

时间:2019-04-25 08:02:26

标签: r assign 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循环,是否可以潜在地提高速度?

1 个答案:

答案 0 :(得分:1)

在这种情况下,我倾向于使用for-loop。这很清楚,sapply并不会加快AFAIK的速度,因为sapply只是for-loop背后的特殊情况。有关详细信息,请参见here

例如:

for (i in s) a[[i]]$field3 <- 5 - i