dplyr管道中删除NA的惯用方法是在filter()调用中使用complete.cases():

iris %>% filter(complete.cases(.))

但是本机R管道的_占位符似乎并不喜欢它:

iris |> filter(complete.cases(`...` = _))

# Error in filter(iris, complete.cases(... = "_")) : 
    # invalid use of pipe placeholder (<input>:1:0)

如何将_占位符传递给点...

推荐答案

_PLACEHOLDER最多只能在|>;管道的右侧使用一次,如果使用,则必须用作右侧调用表达式的命名参数.它不能用作未命名参数,也不能在嵌套在右侧主调用中的内部调用中使用.请参见help("|>").

以下是使用内置BOD数据框的一些替代方案.#3已经在另一个答案中显示了,但为了完整起见,我将其包括在内.我个人发现管道中所需的带有括号的匿名函数语法很难读懂,通常会使用其他语法之一.

library(dplyr) # filter
BOD[1, 2] <- NA

# 1 - list/with
BOD |> 
  list(x = _) |>
  with(filter(x, complete.cases(x)))

# 2 - named function
noNA <- function(x) filter(x, complete.cases(x))
BOD |> noNA()

# 3 - anonymous function
BOD |> (\(x) filter(x, complete.cases(x)))()

# 4 - with dplyr use cur_group; pick(everything()) also works
BOD |>
  filter(complete.cases(cur_group()))

# 5 - use a different function
library(tidyr)
BOD |>
  drop_na()

我们也可以避免使用|>;

# 6 - uses %>% instead
BOD %>%
  filter(complete.cases(.))

# 7 - avoid piping
filter(BOD, complete.cases(BOD))

# 8 - same as 7 but BOD only referenced once
x <- BOD
filter(x, complete.cases(x))

# 9 - Bizarro pipe (not really a pipe)
BOD ->.
   filter(., complete.cases(.))

R相关问答推荐

将一个载体的值相加,直到达到另一个载体的值

为什么以及如何修复Mapview不显示所有点并且st_buffer合并一些区域R?

为什么当我try 在收件箱中使用合并功能时会出现回收错误?

判断字符串中数字的连续性

次级y轴R gggplot2

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

将嵌套列表子集化为嵌套列表

在R中使用download. file().奇怪的URL?

如何优化向量的以下条件赋值?

非线性混合效应模型(NLME)预测变量的置信区间

R:从geom_ol()中删除轮廓并导出为pdf

Select 季度月值

正则表达式在第二个管道和第二个T之后拆分R中的列

在R中,如何将误差条放置在堆叠的每个条上?

创建列并对大型数据集中的特定条件进行成对比较的更高效程序

基于R中的辅助向量中的值有条件地连接向量中的字符串

数据集上的R循环和存储模型系数

使用R、拼图和可能的网格包绘制两个地块的公共垂直线

希望解析和复制R中特定模式的数据

我怎么才能把一盘棋变成一盘棋呢?