如何让R语言中gsub()将空格替换为下划线而非句点?
解决方案
你的代码存在两个关键问题,导致空格替换下划线的操作未生效,以下是针对性的解决方法:
场景1:替换数据框列名中的空格
如果目标是把列名里的空格替换为下划线,执行以下代码:
data <- read.csv("path to csv", skip = 43) # 将列名的空格替换为下划线并重新赋值 colnames(data) <- gsub(' ', '_', colnames(data)) write.csv(data, "path to csv again", row.names = FALSE)
场景2:替换数据内容中的空格
如果要替换所有单元格内容里的空格,需要遍历每一列处理:
data <- read.csv("path to csv", skip = 43) # 遍历列,仅对字符型列替换空格 data[] <- lapply(data, function(x) { if (is.character(x)) gsub(' ', '_', x) else x }) write.csv(data, "path to csv again", row.names = FALSE)
无效原因说明
- 之前的
gsub调用仅生成了修改后的临时结果,但没有赋值回data,原数据未被改动 - 直接对整个data.frame调用
gsub会触发隐式类型转换,无法精准作用于列名或单元格内容
内容的提问来源于stack exchange,提问作者emily
相关产品推荐
相关产品推荐

