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

如何从指定列中按顺序提取首个非NA值(R语言tidyverse)

解决按列顺序提取首个非NA值的问题

你的代码出错的核心原因是:pmap_int里的.x仅对应list(x,w,z)中的第一个元素(也就是x列),并没有把x、w、z整合成当前行的向量来处理,所以只会从x列筛选非NA值,自然得不到正确结果。

下面给你两种可行的解法:

方法1:用coalesce函数(最简洁)

dplyr的coalesce函数就是专门用来按参数顺序返回第一个非NA值的,完全匹配你的##### s一粒粒e尾解法报考:华CE德纳rammar这里应该是需求

d1 %>%
  mutate(want = coalesce(x, w, z))

运行后want列就是你期望的结果:1, 2, 9, 4, NA

方法2:修正pmap的写法

如果想用pmap系列函数,需要把每一行的x、w、z打包成向量,再筛选首个非NA值:

d1 %>%
  mutate(want = pmap_dbl(list(x, w, z), ~ {
    row_vec <- c(...)
    row_vec[!is.na(row_vec)][1]
  }))

这里用pmap_dbl是因为结果包含NA(pmap_int无法处理NA),如果需要整数类型,可以后续用as.integer()转换。

内容的提问来源于stack exchange,提问作者r.user.05apr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:42:06