0

我正在使用 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 新手,非常感谢您的帮助。我试图确保这不是转发,但如果是,请务必将我链接到原版。

4

1 回答 1

2

假设文本文件如下所示:

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 天后自动删除),以便其他人可以查看。

于 2013-04-01T13:03:00.547 回答