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

R语言如何移除数据框列字符串点号 解决gsub替换返回空串问题

问题原因

你使用的gsub('.', '', as.character(df$price))返回空字符串,是因为gsub()默认以正则表达式规则匹配内容,而.在正则语法中是匹配任意单个字符的通配符,相当于把列内所有字符都替换为空,最终得到空结果。

正确实现方案

方案1:固定匹配普通字符(推荐)

给gsub()添加fixed = TRUE参数,关闭正则解析,直接按字面意义匹配点号,处理完后转回整数类型即可:

# 移除price列所有点号并转回整数
df$price <- as.integer(gsub('.', '', df$price, fixed = TRUE))

方案2:正则转义匹配点号

如果需要保留正则匹配逻辑,使用双反斜杠\\对.做转义,标记其为需要匹配的普通点号字符:

df$price <- as.integer(gsub('\\.', '', df$price))
效果验证

使用你提供的示例数据测试:

# 构造示例数据(注意带点的千分位数字需要以字符型存储,否则R会报语法错误)
df <- data.frame(price = c("1.800.000", "900.000", "1.500.000"))
df$price <- as.integer(gsub('.', '', df$price, fixed = TRUE))

运行后输出结果完全符合预期:

> df
    price
1 1800000
2  900000
3 1500000

提示:这类以点作为千分位分隔符的价格数据,在文件导入阶段建议直接将该列指定为字符型读取,避免R自动做数值类型转换导致原始值错乱。

内容的提问来源于stack exchange,提问作者vini.m.oliveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 06:54:26