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

R中按第一列取值将指定行所有数值改为NA的实现(base R/dplyr)

错误原因说明

你原有代码的核心问题是mutate_at的第一个参数用于指定需要修改的列,不能传入行筛选逻辑,row()函数的用法也不符合需求,才会触发逻辑判断类报错。


base R 实现

直接通过行索引定位+批量赋值即可:

# 定位A列取值为CA3、CA4的行
target_rows <- df$A %in% c("CA3", "CA4")
# 将这些行除第一列A之外的所有列赋值为NA
df2 <- df
df2[target_rows, -1] <- NA

dplyr 实现

推荐用新版dplyr的across语法实现(已废弃的mutate_at不推荐继续使用):

library(dplyr)
df2 <- df %>%
  # 对除A列之外的所有列做判断
  mutate(across(-A, ~ ifelse(A %in% c("CA3", "CA4"), NA, .x)))

运行后得到的df2就符合你的预期输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:06:03