我试图加载包含整数和浮点数据的文件。我不知道为什么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
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
> 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
答案 0 :(得分:11)
这可能值得一个我们可以指出的真实答案,所以.......
{3.1}中type.convert
的行为被改变了(并且,如下所述,将在很大程度上恢复到R 3.1.1中3.1.0之前的行为):
从R 3.1.0开始,将输入转换为数字或复数 导致精度损失,它们作为字符串返回(as.is = TRUE)或因素。
这在r-devel邮件列表中引起了相当重要的骚动。相关(和长)线程的开头是here。
正如Ben上面提到的,该讨论的结果之一是在后续版本的开发版本中默认行为为restored。
如果您知道哪些列会受到影响,您可以在短期内使用colClasses
。否则,您必须修改代码以检查read.table
的结果并自行转换,我猜。