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

如何在R中读取Tableau导出的空格分隔CSV并解决编码错误

解决Tableau导出空白分隔文件在R中读取失败的问题

问题重现

从Tableau导出的空白分隔文件可在Excel正常读取,但执行以下read.csv代码时触发编码错误与嵌入空值警告:

df <- read.csv(file = pathfile, header = TRUE, sep = "  ", dec = ".", encoding = "ANSI", stringsAsFactors = FALSE)

错误及警告信息:

Error in make.names(col.names, unique = TRUE) : 
  invalid multibyte string at '<ff><fe>A'
Además: Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 1 appears to contain embedded nulls
2: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 2 appears to contain embedded nulls
3: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 3 appears to contain embedded nulls
4: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 4 appears to contain embedded nulls
5: In read.table(file = file, header = header, sep = sep, quote = quote,  :
  line 5 appears to contain embedded nulls

文件内容示例:

Año Categoría Migratoria    Centro Regional Ciudad Hospedaje    Colombiano Extranjero   Departamento Hospedaje  Departamento1   Entrada Salida  Entrada Salida (copia)  Meses1  Motivo Viaje    País Destino Procedencia    País Nacionalidad   Puesto Migratorio   Rango Edad  Region Destino  Region Nacionalidad Sexo1   Tipo Transporte Cantidad de filas (agregadas)   aFemenino   Masculino   Number of Records
2022    Sin Especificar Antioquia   Sabaneta    Colombianos Antioquia   Antioquía   Entradas    Entradas    Septiembre  Residente   República Dominicana    Colombia    Aeropuerto José María Córdova de Rionegro   0-17    América Central y el Caribe América del Sur Femenino    Aéreo   2   2   0   1
2022    Sin Especificar Antioquia   Rionegro    Colombianos Antioquia   Antioquía   Entradas    Entradas    Septiembre  Turismo México  Colombia    Aeropuerto José María Córdova de Rionegro   0-17    América Central y el Caribe América del Sur Femenino    Aéreo   1   1   0   1
2022    Sin Especificar Antioquia   Envigado    Colombianos Antioquia   Antioquía   Entradas    Entradas    Septiembre  Turismo República Dominicana    Colombia    Aeropuerto José María Córdova de Rionegro   0-17    América Central y el Caribe América del Sur Femenino    Aéreo   3   3   0   1
2022    Sin Especificar Antioquia   Barranquilla    Colombianos Atlántico   Antioquía   Entradas    Entradas    Septiembre  Residente   República Dominicana    

解决方案

1. 修正编码与分隔符参数

错误中的<ff><fe>是UTF-16 LE编码的BOM标记,说明文件并非ANSI编码;同时Tableau导出的“空格分隔”实际多为制表符分隔,调整参数后用read.delim读取:

df <- read.delim(file = pathfile, header = TRUE, sep = "\t", dec = ".", encoding = "UTF-16LE", stringsAsFactors = FALSE)

2. 使用readr包鲁棒读取

readr包的read_table函数可自动识别空白分隔列,同时指定编码解决乱码:

library(readr)
df <- read_table(pathfile, locale = locale(encoding = "UTF-16LE"))

3. 手动清理嵌入空值后读取

若文件存在嵌入空值,先读取并清理空字符,再解析:

# 读取所有行并移除空字符
lines <- readLines(pathfile, encoding = "UTF-16LE")
lines <- gsub("\0", "", lines)
# 传递清理后的内容给read.table
df <- read.table(textConnection(lines), header = TRUE, sep = "\t", dec = ".", stringsAsFactors = FALSE)

内容的提问来源于stack exchange,提问作者lasagna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:16:06