如何在嵌套函数调用中传递原生R管道的_占位符至...参数
解决R原生管道
|>中传递占位符至complete.cases()的问题 在使用R原生管道|>结合dplyr的filter()函数去除NA值时,无需对complete.cases()的...参数做特殊命名赋值,直接使用_占位符指代管道输入即可。
正确写法示例
直接将原生管道的占位符_传入complete.cases():
iris |> filter(complete.cases(_))
或者使用匿名函数显式处理输入数据框(适合更复杂的场景):
iris |> (\(df) filter(df, complete.cases(df)))()
错误原因解析
你之前的写法iris |> filter(complete.cases(... = _))存在两个问题:
complete.cases()的...是可变参数,不需要显式命名赋值,直接传入数据框即可;- 原生管道的
_占位符用于直接指代管道的输入对象(此处为iris数据框),无需绑定到参数名,强行命名会触发语法错误。
与dplyr管道的对比
dplyr的%>%管道用.指代输入,而原生管道|>用_作为等效占位符。在处理整个数据框的场景中,两者的逻辑一致,只是占位符符号不同。
内容的提问来源于stack exchange,提问作者DuckPyjamas
相关产品推荐
相关产品推荐

