r - 为什么在 R 代码中添加多个条件时使用 '$"(美元符号)?

标签 r dplyr filter

我正在学习 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:

  1. env-variables are "programming" variables and live in an environment. They are usually created with <-. Env-variables can be any type of R object.
  1. 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/

相关文章:

linux - 在 linux 上使用 ffmpeg 删除/覆盖 mp4 视频格式上的 Logo

r - ggplot2:在两个密度图上排列 x 限制

r googleVis : How to control html tooltips (positioning, 边框和背景)

r - 如何处理在 dplyr 管道中进一步产生空数据的管道

r - 使用 dplyr filter_at() 函数选择有条件的行

c# - 如何使用NAudio的BiQuadFilter?

r - 从 R (x64) 连接到 MS Access 数据库

r - 按组清除 R 数据框中的行

r - 如何使用 dplyr 中的 mutate 创建一系列由指定突变值的向量定义和调用的列?

javascript - 使用每个附加 DIV 从“选择元素”中删除选项