R语言导入制表符分隔文件后data.frame仅显示单列如何解决
问题原因
导入制表符分隔文件时未正确指定分隔符,导致每一行的所有内容被识别为单个字符串列。
修复方法
方法1:导入文件时直接正确配置参数
你可以直接使用专门处理制表符分隔文件的read.delim()函数导入,配置示例如下:
# header=TRUE表示文件首行为表头,sep="\t"指定分隔符为制表符 data.set <- read.delim("你的本地文件路径", header = TRUE, sep = "\t", stringsAsFactors = FALSE)
如果习惯用read.table(),调整参数即可:
data.set <- read.table("你的本地文件路径", header = TRUE, sep = "\t")
方法2:无需重新导入,直接拆分已生成的单列
如果已经完成导入不想重新读取文件,可以直接拆分现有单列:
- 用tidyr包处理:
library(tidyr) # sep="\\s+"匹配任意多个空白符(制表符/空格都可识别),convert=TRUE自动将内容转为数值型 data.set_fixed <- separate(data.set, col = 1, into = c("Var1", "Var2", "Var3", "Var4"), sep = "\\s+", convert = TRUE)
- 用base R原生方法处理:
# 按空白符拆分单列 split_cols <- strsplit(as.character(data.set[,1]), "\\s+") # 拼接为数据框 data.set_fixed <- data.frame(do.call(rbind, split_cols), stringsAsFactors = FALSE) # 配置表头 colnames(data.set_fixed) <- c("Var1", "Var2", "Var3", "Var4") # 把所有列转为数值型 data.set_fixed <- as.data.frame(lapply(data.set_fixed, as.numeric))
验证修复结果
执行dim(data.set_fixed),如果返回结果为325 4就说明修复完成,之后你就可以正常用data.set_fixed[,1]调取指定列。
内容的提问来源于stack exchange,提问作者Amanda Alley
相关产品推荐
相关产品推荐

