簡體   English   中英

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

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM