R语言使用read.csv、read.csv2读取csv文件数据均在同一列如何解决
问题解决方案
问题原因
从运行输出结果可以判断,CSV文件的字段分隔符为分号;,表头行末尾存在冗余逗号,属于文件导出时的格式异常。此前使用read.csv2未成功是因为该函数默认适配小数点为逗号、分隔符为分号的欧洲CSV格式,文件存在的格式异常会触发识别失败,显式指定参数更稳妥。
解决方法
- 方法1:使用R基础包显式指定参数读取
直接指定分隔符、表头参数即可正常拆分,代码如下:
# 显式指定分隔符为分号,开启表头识别,自动去除字段前后多余空格 disease_type <- read.csv( "C:/Documents/Cancer_Bioinformatics/disease_type.csv", sep = ";", header = TRUE, strip.white = TRUE ) # 验证读取结果 head(disease_type)
如果读取后发现最后一列全为空值(由表头末尾冗余逗号导致),直接删除最后一列即可:
disease_type <- disease_type[, -ncol(disease_type)]
- 方法2:使用兼容性更强的
data.table::fread读取fread对格式不规范的CSV兼容性更高,可自动识别大部分分隔符和格式异常:
# 未安装data.table时先运行安装 # install.packages("data.table") library(data.table) disease_type <- fread( "C:/Documents/Cancer_Bioinformatics/disease_type.csv", sep = ";", header = TRUE ) # 如需转换为普通data.frame格式 disease_type <- as.data.frame(disease_type)
内容的提问来源于stack exchange,提问作者Kev
相关产品推荐
相关产品推荐

