【问题标题】:Importing a txt file when number of columns isn't known列数未知时导入 txt 文件
【发布时间】:2016-07-11 11:18:06
【问题描述】:

我需要将 txt 文件中的数据读入数据框中。列数未知,数据不同。它可以是任何数字。在示例中,我展示了 5 列。但在实际数据中,它是未知的。它可能有 15 个或 30 个或更多。

3401 6193 6237 
1556 2502 2883 4431 6119 
643 3723 

我期待类似的东西

  V1             V2             V3      V4           V5  
3401            6193           6237     NA            NA
1556            2502           2883    4431           6119 
643             3723            NA      NA             NA

我需要 data.frame 或矩阵中的数据。

【问题讨论】:

  • txt 文件是否总是在单独的行上有单独的行?
  • 是的。单独的行表示下一行。空格表示下一列

标签: r csv import read.table


【解决方案1】:

使用count.fields 查找每个新表的长度:

df.col.length = max(count.fields(test.txt,sep=" "))

然后您可以使用 read.table 和 fill = TRUE 将您的表格放入 R:

test.df = read.table(test.txt, sep = " ", col.names = c(1:df.col.length), fill = TRUE)

【讨论】:

  • 它将列号设置为第一行中的元素数。在这种情况下,列号将为 3。
  • 正如我在问题中所写的,列数未知,可能是 30 或 40 或 80。您提供的解决方案是针对固定数据。
  • 当有 1001 列时,您的代码会失败。或者如果有 11 列,它会创建 1000 列。
  • 是的,事实证明您的示例没有完美的解决方案,但如果您的问题不 (1) 包含具有代表性的示例数据,并且 (2) 您需要做更多的工作您自己(例如删除额外的列或找到 1000 之外的其他最大值),这不会使解决方案出错。
  • count.fields 应该可以解决您的问题(请参阅解决方案编辑)。
猜你喜欢
  • 2011-07-21
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
相关资源
最近更新 更多