如何移除R语言DataFrame列值的括号并保留内容转为数值列
错误原因
- R语言对大小写敏感,你构造的数据集列名为
Result(首字母大写,其余小写),但代码中调用的是全大写的RESULT,调用不存在的列触发了报错 - 你当前的正则规则仅匹配了左方括号
[,没有处理右方括号],即使解决列名问题,也无法完成全部括号的移除
基础R实现代码
# 移除所有方括号,注意列名大小写 results2$Result <- gsub("[\\[\\]]", "", results2$Result) # 转换为数值类型,原ND值会自动转为NA results2$Result <- as.numeric(results2$Result)
tidyverse 风格实现代码
如果你习惯用dplyr的管道操作,可以用以下写法:
results2 <- results2 %>% mutate(Result = str_remove_all(Result, "\\[|\\]"), Result = as.numeric(Result))
结果说明
处理后的results2数据如下:
| Name | Result |
|---|---|
| A | NA |
| B | 0.5 |
| A | 1.2 |
| A | NA |
| B | NA |
| B | 0.8 |
| C | NA |
| C | 1.1 |
| C | 22.0 |
原列中的ND为非数字字符串,转换为数值类型时会自动转为缺失值NA,属于正常行为
内容的提问来源于stack exchange,提问作者Cbotelho
相关产品推荐
相关产品推荐

