R语言导入表格时能否直接转义作为分隔符的字面量"/t"?
直接在导入阶段指定"/t"为分隔符的两种解决方案
方案1:tidyverse/readr包方案(最简便)
readr包的read_delim()原生支持多字符字面量分隔符,无需额外做数据清洗:
library(tidyverse) df <- read_delim( file = "ponies.txt", delim = "/t", name_repair = "minimal" # 保留列名中的空格,不自动修改 )
读取完成后直接得到结构正确的数据集,和你手动清洗后的结果完全一致。
方案2:base R原生方案(无需加载第三方包)
base R的read.table系列仅支持单字符分隔符,你可以先读入全行再拆分:
# 读入文件所有行 raw_lines <- readLines("ponies.txt") # 按字面量"/t"拆分每一行 splited <- strsplit(raw_lines, "/t", fixed = TRUE) # 转换为数据框,第一行设为列名 df <- setNames( as.data.frame(do.call(rbind, splited[-1]), stringsAsFactors = FALSE), gsub('"', '', splited[[1]]) )
问题原因说明
你之前用read.delim设置sep="/t"只得到1列,是因为base R的read.table类函数仅支持单字符分隔符,传入多字符字符串时仅会取第一个字符"/"作为分隔符,才会出现后续需要手动移除每个字段开头的"t"的情况。
内容的提问来源于stack exchange,提问作者Rob Strasser
相关产品推荐
相关产品推荐

