2
为什么`[`优于`subset`?
当我需要过滤data.frame,即提取满足某些条件的行时,我更喜欢使用以下subset功能: subset(airquality, Month == 8 & Temp > 90) 而不是[功能: airquality[airquality$Month == 8 & airquality$Temp > 90, ] 我偏爱的主要原因有两个: 我发现代码从左到右读起来更好。即使对R一无所知的人也可以说出subset上面的陈述在做什么。 因为列可以在select表达式中称为变量,所以我可以节省一些击键。在上面的示例中,我只需输入airquality一次subset,但只需输入3次[。 因此,我过着幸福的生活,subset在任何地方都可以使用它,因为它更短且读起来更好,甚至向我的R编码员倡导它的美。但是昨天我的世界崩溃了。在阅读subset文档时,我注意到以下部分: 警告 这是旨在交互使用的便利功能。对于编程,最好使用标准的子集函数,例如[,尤其是参数子集的非标准评估会产生意想不到的后果。 有人可以帮助澄清作者的意思吗? 首先,“ 交互使用 ” 是什么意思?我知道交互式会话是什么,而不是在BATCH模式下运行的脚本,但是我看不出它应该有什么区别。 然后,请您解释一下“ 论点子集的非标准评估 ”,为什么这样做很危险,也许可以举个例子?