R语言中()()双括号语法名称是什么?求相关学习资料
R语言中
function()(x)双括号语法的解释与资料推荐 语法名称:函数工厂(Function Factory)调用
你看到的scales::label_percent()(n / sum(n))是函数工厂的典型用法:
- 首先调用
scales::label_percent()(可传入accuracy等参数控制格式化规则),它不会直接输出格式化后的字符串,而是返回一个专门用于处理百分比格式化的新函数; - 紧接着的第二个括号
(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
相关产品推荐
相关产品推荐

