我有一个.csv,其中一列包含7个小数位的数字,例如:-117.2403266.
当我读到.csvR时,它只显示该列的4位小数,例如:-117.2403.或者也许他们都在那里,但是当我打印它只显示四位小数?
我认为这可以在read.csv()函数的参数中解决,但它没有说明小数位.
42-*_*42- 23
read.csv不是截断或舍入,但是您的print.data.frame函数只显示指定精度的值options().尝试:
print(dfrm, digits=10)
> dfrm<- data.frame(test=-117.2403266)
> print(dfrm)
test
1 -117.2403
> print(dfrm, digits=10)
test
1 -117.2403266
Run Code Online (Sandbox Code Playgroud)
使用format建议将表明精度没有丢失,但它将返回一个字符向量,因此它可能不适合在预期数值时进行赋值.
编辑一篇2年前的帖子:这个主题可能会提出一个问题,即当整数大于时可以导入整数 .Machine$integer.max #[1] 2147483647,因为它们现在可以在内部完全存储为'数字' - 横坐标值,这样最大值就是2 ^ 52(或2 ^ 53-1,我忘了它是什么).当从scan基于函数的函数中读取这些函数时(就像read.*-fily一样),您需要声明为'numeric'而不是'integer':
> str( scan(text="21474836470", what=integer()))
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
scan() expected 'an integer', got '21474836470'
> str( scan(text="21474836470", what=numeric()))
Read 1 item
num 2.15e+10
> str( read.table(text="21474836470", colClasses="integer"))
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
scan() expected 'an integer', got '21474836470'
> str( read.table(text="21474836470", colClasses="numeric"))
'data.frame': 1 obs. of 1 variable:
$ V1: num 2.15e+10
Run Code Online (Sandbox Code Playgroud)
如果您没有为"what"指定类型或模式,scan则会假设numeric()并且它会成功.
| 归档时间: |
|
| 查看次数: |
14455 次 |
| 最近记录: |