当我需要过滤数据时.frame,即提取满足特定条件的行,我更喜欢使用subset
函数:
subset(airquality, Month == 8 & Temp > 90)
而不是[
功能:
airquality[airquality$Month == 8 & airquality$Temp > 90, ]
我的偏好主要有两个原因:
-
我发现代码从左到右读起来更好.即使对R一无所知的人也能知道上面的
subset
条语句在做什么. -
因为列在
select
表达式中可以被称为变量,所以我可以节省一些按键.在我上面的例子中,我只需要用subset
输入airquality
一次,但用[
输入三次.
所以我过着幸福的生活,到处都用subset
,因为它更短,读起来更好,甚至向我的程序员同事宣扬它的美丽.但昨天我的世界崩溃了.在阅读subset
篇文档时,我注意到这一部分:
警告
这是一个便于交互使用的功能.对于编程来说,最好使用标准的子集函数,比如[,尤其是参数子集的非标准求值可能会产生意想不到的后果.
有人能帮助澄清作者的意思吗?
首先,他们所说的"for use interactively"是什么意思?我知道什么是交互式会话,而不是在批处理模式下运行脚本,但我不知道它应该有什么区别.
那么,请你解释一下"the non-standard evaluation of argument subset"这个词,以及为什么它很危险,也许可以举个例子?