我正在尝试加载包含整数和浮点数据的文件.我不知道为什么R会将其中一列读作字符字段.
> df <- read.table( 'C:\\temp\\test.tab' ,
+ sep = '\t' , header = TRUE , stringsAsFactors = FALSE , dec="." )
> str(df)
'data.frame': 7 obs. of 5 variables:
$ A: int 0 0 0 0 1 0 0
$ B: int 1431 2097 2712 24821 27359 41165 49221
$ C: int 0 0 0 0 0 0 0
$ D: chr "7" "26.950000762939453" "57.95000076293945" "21" ...
$ E: int 1 2 3 4 5 6 7
Run Code Online (Sandbox Code Playgroud)
A B C D E
0 1431 0 7 1
0 2097 0 26.950000762939453 2
0 2712 0 57.95000076293945 3
0 24821 0 21 4
1 27359 0 57.900001525878906 5
0 41165 0 33.95000076293945 6
0 49221 0 28.950000762939453 7
Run Code Online (Sandbox Code Playgroud)

> R.version
_
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 1.0
year 2014
month 04
day 10
svn rev 65387
language R
version.string R version 3.1.0 (2014-04-10)
nickname Spring Dance
Run Code Online (Sandbox Code Playgroud)
jor*_*ran 11
这可能值得我们指出的真正答案,所以......
type.convert在R 3.1.0中改变了行为(并且,如下所述,将在很大程度上恢复到其在R 3.1.1中的3.1.0之前的行为):
从R 3.1.0开始,将输入转换为数字或复数将导致精度损失,它们将作为字符串(as.is = TRUE)或因子返回.
这在r-devel邮件列表上引起了相当重要的骚动.相关(和长)线程的开头就在这里.
正如上面提到的那样,该讨论的结果之一是在后续版本的开发版本中恢复了默认行为.
在短期内,如果您知道哪些列会受到影响,您可以随时使用colClasses.否则你必须修改你的代码来检查read.table你自己的结果和转换,我想.