【问题标题】:Double not imported with decimal in R [duplicate]在R中未使用小数导入双精度[重复]
【发布时间】:2014-01-27 08:33:31
【问题描述】:

我要导入这些数据

Id_points; x; y; z; remarks  
1; 2562156.119; 1122172.393; 425.627; capteur  
2; 2562155.844; 1122172.412; 420.709;  

我使用下面的代码

S1<-read.csv2('section_raw_data.csv', header=TRUE, sep = ";", dec = ".", fill=TRUE, colClasses=c('integer', 'double', 'double','double','character') )

生成的数据框是:

Id_points; x; y; z; remarks  
1; 2562156; 1122172; 425.627; capteur  
2; 2562155; 1122172; 420.709;    

有谁知道为什么前 2 个双精度数被截断为小数?

【问题讨论】:

  • @tonytonov double 是 R 中 numeric 的同义词:参见 ?double
  • @Roland 谢谢,删除评论。
  • 有什么方法可以针对 R-FAQ 标记这样的多重重复问题吗?
  • @CarlWitthoft 是否已经有此问题的常见问题解答?如果没有,您可以创建一个或将其中一个更好的骗子标记为 r-faq。
  • @Roland 我以无知为由——是否有 StackOverflow 特定主题的常见问题解答?我可以参考cran.r-project.org/faqs.html 7,但这不是一个很好的匹配(R-FAQ 几乎假设人们理解存储和显示之间的区别)。

标签: r csv import


【解决方案1】:

它们只为打印而四舍五入。内部表示是双精度的。

S1<-read.csv2(text="Id_points; x; y; z; remarks  
1; 2562156.119; 1122172.393; 425.627; capteur  
2; 2562155.844; 1122172.412; 420.709; ", 
              header=TRUE, sep = ";", dec = ".", fill=TRUE, 
              colClasses=c('integer', 'double', 'double','double','character') )

sprintf("%f",S1$x)
#[1] "2562156.119000" "2562155.844000"

【讨论】:

  • 并且打印到控制台的位数可以用options(digits=your_choice_here)调整
猜你喜欢
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 2016-11-11
  • 2012-12-02
  • 1970-01-01
相关资源
最近更新 更多