如何在R中基于同行列的<符号为数据框添加Y/N检测列?
问题修正与解决方案
首先,你的代码存在几处语法错误,以下是修正后的完整流程:
1. 正确创建数据框
原始数据框中,带<的数值需要以字符串形式定义,否则R会识别为语法错误:
df <- data.frame( analyte1 = c("1", "1.5", "3", "<2"), analyte2 = c("<1", "2", "3", "<1"), analyte3 = c("1", "<1", "1.5", "3"), stringsAsFactors = FALSE # 避免自动转为因子类型 )
2. 修正列名定义与mutate语法
- 列名需定义为字符向量,不能直接写未加引号的变量名
across()的语法需要正确嵌套:判断逻辑要放在across()内部,.names参数属于across()的参数之一
修正后的代码:
# 定义目标分析物列的名称(字符向量) target_cols <- c("analyte1", "analyte2", "analyte3") # 批量生成detect判断列 df <- df %>% mutate(across(all_of(target_cols), ~ifelse(grepl("<", .x), "N", "Y"), .names = "detect_{.col}"))
运行结果说明
执行后,数据框会新增detect_analyte1、detect_analyte2、detect_analyte3三列,判断规则为:
- 对应分析物单元格包含
<时,值为N - 不包含
<时,值为Y
内容的提问来源于stack exchange,提问作者Curdz Coder
相关产品推荐
相关产品推荐

