Я пришел к мысли, что аргументы "[
" похожи на пулеметные ремни:
set.seed(10)
datfrm <- data.frame(a= rev(letters[1:10]), b = runif(10), cc = letters[1:10] )
datfrm[datfrm$b < 0.5, "b"] <- 0
поэтому ремень пулемета проходит только через первый аргумент "[
":
---
---
---
---
datfrm[datfrm$b < 0.5, "b"] <- 0
Но если вы хотите назначать только подмножеству, скажем, из другого столбца:
--- ---
--- ---
--- ---
--- ---
datfrm[ datfrm$b < .5, "cc"] <- datfrm[ datfrm$b < .5, "a"]
Выражение datfrm$b
многократно оценивается, и когда они соединяются в паре с любой стороны присвоения ... все происходит как ожидалось. Так что в этом плохого или правильного и можно ли его улучшить?