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

如何使用data.table包读取存储vector类型列的CSV文件

解决方法

CSV是纯文本二维表格格式,原生不支持嵌套列表结构,你用fwrite写入时会自动将列表列的向量元素按默认分隔符|拼接为字符串存储,读入后按以下步骤转换即可恢复原结构:

方法1:直接转换读入的文本列

# 读入CSV文件
df <- data.table::fread(file = "C/MyFolder/file.csv")
# 拆分var2列的字符串,转数值后存为列表列
df[, var2 := lapply(strsplit(var2, "\\|"), as.numeric)]
# 如需转回tibble格式执行下面这句
df <- tibble::as_tibble(df)

转换完成后取df$var2[[1]]即可得到原向量c(1,2,3)。
如果你的向量元素本身包含|字符,可在写入时自定义拼接分隔符避免冲突:

# 写入时指定用||作为向量元素的分隔符
data.table::fwrite(df, file = "C/MyFolder/file.csv", sep2 = c("", "||", ""))
# 读入时按||拆分即可
df[, var2 := lapply(strsplit(var2, "\\|\\|"), as.numeric)]

方法2:改用R原生序列化格式(更推荐)

如果只是在R环境内读写数据,不需要用CSV给其他工具使用的话,更推荐用RDS格式存储,可100%保留所有数据结构,无需额外转换:

# 存文件
saveRDS(df, "C/MyFolder/file.rds")
# 读文件,直接得到原tibble结构
df <- readRDS("C/MyFolder/file.rds")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:54:05