【问题标题】:Is there a way to coerce R into reading a table with a specific number of columns, so that it fills all columns?有没有办法强制 R 读取具有特定列数的表,以便它填充所有列?
【发布时间】:2020-05-14 16:38:41
【问题描述】:

我正在尝试将this table 读入 R。

我知道我可以跳过前 x 行来忽略序言。

使用此代码:

read.table("https://www.physics.mcmaster.ca/~harris/GCS_table.txt",
              header = T,
              sep = "\t",
              skip = 36)

我遇到的问题是 R 将所有数据放在一列中,而不是将其分成不同的列。

我注意到列标题,一旦我将它们读入 R,似乎用小数点分隔,所以我试过了:

read.table("https://www.physics.mcmaster.ca/~harris/GCS_table.txt",
              header = F,
              sep = "\t",
              skip = 38)

避免使用标题 - 这更好,但它仍然强制将所有内容放在一列中。

我已经尝试了所有我能想到的“sep”参数,但没有运气。

有没有办法告诉 R 填充 x 列?还是我的“sep”参数有问题?

【问题讨论】:

  • 能否提供您的数据样本?我很确定这与分隔符有关。
  • 运行第二个块后,我得到this.
  • 您是否可以发布文本文件前 3 行的示例?
  • 哦,当然!对不起,那是误会了。 Here你去。

标签: r read.table


【解决方案1】:

我不确定您希望表格中有多少行/列,但您可以尝试任一方法

data.table::fread("https://www.physics.mcmaster.ca/~harris/GCS_table.txt",
                   header = TRUE,skip = 36)

或者

read.table("https://www.physics.mcmaster.ca/~harris/GCS_table.txt",
            header = TRUE,skip = 36, fill = TRUE)

【讨论】:

  • 我认为这是不对的。查看原始 txt 文件,它似乎是两个并排的数据帧,并且它们被转置了。
  • 你的第二个建议让我成功了,谢谢!但是,当列名超过 1 个单词时,我遇到了问题,因此我不得不将 header = TRUE 更改为 FALSE,然后将 skip = 36 更改为 38
猜你喜欢
  • 1970-01-01
  • 2019-09-04
  • 2013-08-31
  • 2017-05-14
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多