为什么子集削减小数部分?

Why subset cut decimal part?

您好,这是 data.frame / list 的示例,其中两列包含 X 和 Y。我的问题是当我调用 subset 它将去除小数部分。你能帮我弄清楚为什么吗?

(row.names | X | Y)

> var
...    
9150    4246838.57   5785639.07
9152    4462019.15   5756344.11
9153    4671745.07   5791092.53
9154    4825699.93   5767058.37
9155    4935126.99   5839357.55
> typeof(var)
[1] "list"
> var = subset(var, Y>10980116 & X>3217133)
...
6569  15163607 11323070
6572  15102381 11079465
6573  16462260 11272569
6577  19028175 11095784

我用的时候也是这样:

> var = var[var$Y>10980116 & var$X>3217133,]

感谢您的帮助。

这不是子集问题,而是 formatting/presentation 问题。您在 Burns 的第一个圈子中 R Inferno(“[i]如果您正在使用 R 并且您认为自己身处地狱,那么这是适合您的地图”):

another aspect of virtuous pagan beliefs—what is printed is all that there is

如果我们只是按照输入的方式打印数据框的这一位,我们 "lose" 位。

> df <- read.table(text="
       4246838.57   5785639.07
       4462019.15   5756344.11
       4671745.07   5791092.53
       4825699.93   5767058.37
       4935126.99   5839357.55",
  header=FALSE)
> df
##        V1      V2
## 1 4246839 5785639
## 2 4462019 5756344
## 3 4671745 5791093
## 4 4825700 5767058
## 5 4935127 5839358

告诉 R 你想看到更高的精度:

> print(df,digits=10)
##           V1         V2
## 1 4246838.57 5785639.07
## 2 4462019.15 5756344.11
## 3 4671745.07 5791092.53
## 4 4825699.93 5767058.37
## 5 4935126.99 5839357.55

或者您可以设置options(digits=10)(默认为7)。