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

如何用最少字符在replace_na中使用选择器?附R语言示例

使用选择器调用replace_na的最短代码实现

示例数据

df <- data.frame(x_1 = c(NA, 1, NA), 
                 x_2 = c(1, 1, NA),
                 y = c(NA, 1, 1))

问题

允许在replace_na中使用选择器的最少代码字符数是多少?

现有可行(非最短)代码

df %>%
  mutate(across(matches("^x_(.*)$"), \(x) {
    replace_na(x, 0)
  }))

不可行代码及报错说明

直接在replace_na中传入选择器会触发错误,因为matches()这类选择器必须在across这类选择函数的上下文里使用:

df %>%
    replace_na(matches("^x_(.*)$"), 0)

报错信息:

! matches()必须在选择函数内使用。
ℹ 详情请查看?tidyselect::faq-selection-context。
运行rlang::last_trace()查看错误发生位置。
调用自: signal_abort(cnd, .file)

最短可行代码

通过精简语法、替换更简洁的选择器,可以大幅减少字符数:

  1. 保留正则匹配逻辑的最短版本:
df%>%mutate(across(matches("^x_.*"),~replace_na(.x,0)))
  1. 用更短的starts_with选择器(字符数更少,匹配逻辑更直接):
df%>%mutate(across(starts_with("x_"),~replace_na(.x,0)))

若对匹配范围要求宽松,还可以用matches("x_")进一步缩短代码,但需注意可能匹配到包含x_的其他变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 18:37:27