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

R语言中()()双括号语法名称是什么?求相关学习资料

R语言中function()(x)双括号语法的解释与资料推荐

语法名称:函数工厂(Function Factory)调用

你看到的scales::label_percent()(n / sum(n))是函数工厂的典型用法:

  1. 首先调用scales::label_percent()(可传入accuracy等参数控制格式化规则),它不会直接输出格式化后的字符串,而是返回一个专门用于处理百分比格式化的新函数;
  2. 紧接着的第二个括号(n / sum(n)),是把需要格式化的数值传递给刚生成的这个新函数,最终得到带百分比符号的结果。

这种模式比旧语法scales::percent(n / sum(n))更灵活——可以提前预设格式化规则,后续重复使用:

# 先定义一个保留1位小数的百分比格式化器
my_percent <- scales::label_percent(accuracy = 0.1)
# 后续多次复用这个规则处理数据
my_percent(0.234) # 输出"23.4%"
my_percent(0.5)   # 输出"50.0%"

示例代码对比

library(tidyverse)
members <- 
  read_csv(
    paste0(
      "https://raw.githubusercontent.com/rfordatascience/tidytuesday/", 
      "master/data/2020/2020-09-22/members.csv"
    ), 
    show_col_types = FALSE)


members %>%
  count(success, died) %>%
  group_by(success) %>%
  # 旧语法:直接调用格式化函数一次性处理
  # mutate(percent = scales::percent(n / sum(n))) 
  # 新语法:先生成格式化函数,再处理数据
  mutate(percent = scales::label_percent()(n / sum(n))) 
#> # A tibble: 4 × 4
#> # Groups:   success [2]
#>   success died      n percent
#>   <lgl>   <lgl> <int> <chr>  
#> 1 FALSE   FALSE 46452 98%    
#> 2 FALSE   TRUE    868 2%     
#> 3 TRUE    FALSE 28961 99%    
#> 4 TRUE    TRUE    238 1%

学习资料推荐

  • 《Advanced R》(Hadley Wickham)中的「Function Factories」章节,详细讲解这类函数式编程模式的设计思路与应用场景;
  • R官方文档中关于函数作为返回值的内容,理解R中函数的一等公民特性;
  • scales包官方帮助文档,查看label_percent()等label_*系列函数的示例,直观学习该语法的实际用法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:31:06