You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言mutate函数用法辨析:两段代码是否等价?

关于用dplyr创建guests列的代码疑问解答
  • 两段代码完全不一样,版本1正确,版本2逻辑错误

    • 版本1的guests = adults + children + babies是把三列数值相加,生成的guests列是三列的总和,完全符合你“合并三列”的需求
    • 版本2的写法是错的:mutate(guests = adults, children, babies)里,guests = adults只是把guests列设成和adults列完全相同,后面的children, babies纯粹多余——因为mutate默认会保留所有原列,写不写这俩都不影响结果。你觉得运行后没差异,大概率是数据里children和babies列全是0,这时候版本1的求和结果刚好等于adults列,但代码逻辑本质上是错误的
  • 为什么原列没被替换?
    dplyr的mutate函数本身就是用来添加新列,同时保留所有原有列的,不会自动删除你用来计算的adults、children、babies列。如果想删掉这三列,只保留新的guests列,有两种办法:

    # 方法1:用transmute直接生成新列,自动丢弃原列
    example_df <- bookings_df %>%
      transmute(guests = adults + children + babies)
    
    # 方法2:先mutate加新列,再用select删掉原列
    example_df <- bookings_df %>%
      mutate(guests = adults + children + babies) %>%
      select(-adults, -children, -babies)
    

内容的提问来源于stack exchange,提问作者Maya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:09:49