[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.