我正在学习 R 类(class),我遇到了这行代码:
onlineta_city_hotels <- filter(hotel_bookings,
(hotel=="City Hotel" &
hotel_bookings$market_segment=="Online TA"))
这段代码确实成功地产生了预期的结果。但是,我尝试删除美元符号并执行新代码:
onlineta_city_hotels <- filter(hotel_bookings,
(hotel=="City Hotel" &
market_segment=="Online TA"))
此代码显示相同的结果。所以我想知道在此类语句中使用美元符号的必要性。
最佳答案
大多数tidyverse
(并且 tidyverse
包括 dplyr
)函数使用数据屏蔽。至quote来自包作者-
.. provides data masking, which blurs the distinction between two types of variables:
env-variables
are "programming" variables and live in an environment. They are usually created with<-
. Env-variables can be any type of R object.
data-variables
are "statistical" variables and live in a data frame. Data-variables live inside data frames, so must be vectors.
现在filter
函数来自dplyr
它使用数据屏蔽。所以market_segment
位于 hotel_bookings
内部的变量可以直接在 dplyr 函数内部调用。对于基本 R 函数来说,情况可能并非总是如此。
hotel_bookings[hotel_bookings$hotel=="City Hotel" &
hotel_bookings$market_segment=="Online TA", ]
以下内容在这里不起作用
hotel_bookings[hotel=="City Hotel" &
market_segment=="Online TA", ]
因此在所有 dplyr
内函数、变量名可以自己调用(不使用$)。
如需进一步阅读/引用,请参阅this page.
关于r - 为什么在 R 代码中添加多个条件时使用 '$"(美元符号)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72878015/