如何用R的read.table()读取含空格的study列数据?
解决read.table读取含空格列的问题
你遇到的问题是因为read.table默认把空格当成分隔符,导致study列里的空格被误判为列分隔,进而报错。不用删除空格也能正确读取,有两种实用方法:
方法1:用base R的read.fwf(固定宽度读取)
因为你的数据是固定宽度对齐的,每个字段的宽度固定,直接用read.fwf指定每列宽度即可:
DATA <- read.fwf( text = "study year g v_g assign_type n_class Nt Nc Hayati & Jalilifar 2009 0.213 0.101 student NA 20 20 Hayati & Jalilifar 2009 0.785 0.108 student NA 20 20 Hale & Courtney 1994 -0.894 0.0154 class 4 286 286 Hale & Courtney 1994 0.946 0.0156 class 4 286 286 Hale & Courtney 1994 -0.237 0.0146 class 4 277 277 Hale & Courtney 1994 -0.179 0.0146 class 4 277 277", widths = c(20, 5, 7, 7, 12, 8, 5, 5), # 对应每列的宽度 header = TRUE, strip.white = TRUE # 自动去掉字段前后的空格 )
方法2:用readr包的read_table(自动识别列边界)
如果你习惯tidyverse工具,readr包的read_table能自动识别固定宽度表格的列边界,无需手动指定宽度:
# 先安装包(如果没装过) # install.packages("readr") library(readr) DATA <- read_table("study year g v_g assign_type n_class Nt Nc Hayati & Jalilifar 2009 0.213 0.101 student NA 20 20 Hayati & Jalilifar 2009 0.785 0.108 student NA 20 20 Hale & Courtney 1994 -0.894 0.0154 class 4 286 286 Hale & Courtney 1994 0.946 0.0156 class 4 286 286 Hale & Courtney 1994 -0.237 0.0146 class 4 277 277 Hale & Courtney 1994 -0.179 0.0146 class 4 277 277")
两种方法都能完整保留study列的空格,不需要修改原始数据。
内容的提问来源于stack exchange,提问作者Simon Harmel
相关产品推荐
相关产品推荐

