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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:12:44