【问题标题】:Read.table error in RR中的Read.table错误
【发布时间】:2013-04-01 11:03:44
【问题描述】:

我正在使用 R 读取文本文件,然后对其进行操作。 输入文件有 22 列。这是第一列的样子:

NAME    LENGTH  A   C   D   E   F   G   H   I   K   L   M   N   P   Q   R   S   T   V   W   Y

我目前正在使用:

read.table("filename", stringsAsFactors=FALSE) 

输入文件。当我运行相同时,我收到此警告:

Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 2 did not have 23 elements

不知道我哪里出错了。我是 R 新手,非常感谢您的帮助。我试图确保这不是转发,但如果是,请务必将我链接到原版。

【问题讨论】:

  • 试试header = TRUE 并向我们展示文件的前几行。
  • 或者也许/也使用sep=SEPATATOR,其中SEPARATOR是分隔输入的标记(如.csv文件的逗号)
  • @RomanLuštrik 尝试了 header=TRUE,但它显示相同的错误并且没有打印任何内容。如果有帮助,这里是 txt 文件本身的文件的前几行: NAME LENGTH A C D E F G H I K L M N P Q R S T V W Y ape:APE_0001 242 15 0 1 12 10 18 2 27 9 43 7 2 8 3 5 25 15 24 3 12 猿:APE_0002 113 7 1 6 6 1 12 3 4 10 16 4 2 4 0 10 3 5 9 4 5 猿:APE_0004 305 24 2 5 8 9 25 4 36 12 43 8 11 14 2 12 20 21 27 9 12 所有行都有 22 列(用 count.fields 验证),所以根本不应该出现这种没有 23 个元素的行的错误!标签在 cmets 中不起作用吗!?
  • 那里的冒号“:”可能会弄乱您明显的元素数量。尝试使用fill=TRUE 参数到read.table,看看你会得到什么。
  • @user2211355 编辑您的问题并在此处添加示例数据。

标签: r function


【解决方案1】:

假设文本文件如下所示:

NAME LENGTH A C D E F G H I K L M N P Q R S T V W Y 
ape:APE_0001 242 15 0 1 12 10 18 2 27 9 43 7 2 8 3 5 25 15 24 3 12 
ape:APE_0002 113 7 1 6 6 1 12 3 4 10 16 4 2 4 0 10 3 5 9 4 5 
ape:APE_0004 305 24 2 5 8 9 25 4 36 12 43 8 11 14 2 12 20 21 27 9 12

并且被称为“dat.txt”并存储在您的工作目录中,这应该可以正常工作:

dat <- read.table("dat.txt", stringsAsFactors=FALSE, header=TRUE)
# to give:
dat
          NAME LENGTH  A C D  E  F  G H  I  K  L M  N  P Q  R  S  T  V W  Y
1 ape:APE_0001    242 15 0 1 12 10 18 2 27  9 43 7  2  8 3  5 25 15 24 3 12
2 ape:APE_0002    113  7 1 6  6  1 12 3  4 10 16 4  2  4 0 10  3  5  9 4  5
3 ape:APE_0004    305 24 2 5  8  9 25 4 36 12 43 8 11 14 2 12 20 21 27 9 12

由于这似乎对您不起作用,因此您的文本文件中可能会发生一些奇怪且不可见的事情、隐藏字符等。

假设您的文本文件不是很大,一种解决方法是在 RStudio 中打开一个新的 R 脚本,然后输入

dat <- read.table(stringsAsFactors=FALSE, header=TRUE, text = "")

然后将文本文件中的所有文本复制并粘贴到上一行的"" 之间,不更改换行符或格式,然后全选并将其发送到控制台。

对于您评论中的示例,如下所示:

dat <- read.table(header=TRUE, stringsAsFactors=FALSE, text = "NAME LENGTH A C D E F G H I K L M N P Q R S T V W Y 
ape:APE_0001 242 15 0 1 12 10 18 2 27 9 43 7 2 8 3 5 25 15 24 3 12 
ape:APE_0002 113 7 1 6 6 1 12 3 4 10 16 4 2 4 0 10 3 5 9 4 5 
ape:APE_0004 305 24 2 5 8 9 25 4 36 12 43 8 11 14 2 12 20 21 27 9 12")

如果这不切实际或不可能,请在您的问题中发布指向您的文本文件的链接(例如:http://temp-share.com/show/dPf3a6oHW 45 天后自动删除),以便其他人可以查看。

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 2012-07-21
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多