read.xlsx的小数位数错误

时间:2016-07-12 20:59:25

标签: r

我正在尝试使用read.xlsx命令读入英国国家电网系统中的坐标数据集。  这是数据:

NORTHING  EASTING TOC ELEVATION   WELL ID
1194228.31  2254272.83  117.30  AA-1
1194227.81  2254193.90  114.91  AA-2
1194228.41  2254116.26  114.76  AA-3
1194229.37  2254039.57  112.81  AA-4
1194227.09  2253960.17  112.10  AA-5

这是我的代码:

coordinates <- read.xlsx2("Coordinates.xlsx",sheetName = "Sheet1",
                      startRow = 1,endRow = 111, colIndex = c(1:4),
                colClasses = c("character","character","numeric","character"))

问题是,我的输出如下:

NORTHING EASTING TOC.ELEVATION WELL.ID 1 1194228 2254273 117.30 AA-1 2 1194228 2254194 114.91 AA-2 3 1194228 2254116 114.76 AA-3 4 1194229 2254040 112.81 AA-4 5 1194227 2253960 112.10 AA-5 6 1194227 2253880 110.98 AA-6

该命令将水平和垂直坐标四舍五入,虽然这不是一个大问题,但我希望尽可能准确。这有解决方法吗?我在colClasses选项的选项中找不到任何内容。

1 个答案:

答案 0 :(得分:3)

这是R如何打印数据的问题(通常很方便来给出浮点数据的完整表示);你实际上并没有失去任何精确度。

使用read.table而不是read.xlsx进行说明(我们最终会在同一个地方)。 (如果我用colClasses指定“字符”读取数据,我会显示所有数字,但如果我想对北方和东方变量做任何合理的事情,我最终会得到一个相当无用的数据框......)

dat <- read.table(header=TRUE,
text="
NORTHING  EASTING TOC.ELEVATION   WELL.ID
1194228.31  2254272.83  117.30  AA-1
1194227.81  2254193.90  114.91  AA-2
1194228.41  2254116.26  114.76  AA-3
1194229.37  2254039.57  112.81  AA-4
1194227.09  2253960.17  112.10  AA-5")

这是R打印数据帧的方式:

# NORTHING EASTING TOC.ELEVATION WELL.ID
# 1  1194228 2254273        117.30    AA-1
# 2  1194228 2254194        114.91    AA-2
# 3  1194228 2254116        114.76    AA-3
# 4  1194229 2254040        112.81    AA-4
# 5  1194227 2253960        112.10    AA-5

但是仍然可以看到所有精度仍然存在......

print(dat$NORTHING,digits=12)
## [1] 1194228.31 1194227.81 1194228.41 1194229.37 1194227.09

您还可以print(dat,digits=12)或全局设置options(digits=12)