"表"是否对数值进行整数排序?

  • 本文关键字:quot 整数 排序 是否 r
  • 更新时间 :
  • 英文 :


我在矩阵points中有 120 个向量 (120 x 2)。我计算它们的平方范数:

norms2 <- apply(points, 1L, crossprod)

我将这些平方范数制成表格:

> table(norms2)
norms2
0.410691055416468  1.62481505182984  2.37518494817016  3.58930894458353 
30                30                30                30 

可以看到平方范数取四个可能的值,每个值有 30 个向量。

我提取具有最小平方范数的向量:

> points[norms2 == min(norms2), ]
[,1]       [,2]
[1,]  0.06698726 -0.6373412
[2,]  0.06698726  0.6373412
[3,] -0.06698726 -0.6373412
[4,] -0.06698726  0.6373412

为什么我只得到四个向量,而不是 30 个向量?

如果我以近似相等的方式提取,我会得到 30 个向量:

> dim(points[abs(norms2 - min(norms2)) < 0.001, ])
[1] 30  2

那么解释是什么呢?table对值进行四舍五入吗?

是的,table可以对数字输入进行舍入。

table()调用factor()调用as.character()as.character()进行一些舍入:

x = sqrt(2)
print(x, digits = 22)
# [1] 1.414213562373095145475
as.character(x)
# [1] "1.4142135623731"

下面是一个可重现的示例:

x = c(pi, pi + 1e-15)
x == pi
# [1]  TRUE FALSE
as.character(x)
# [1] "3.14159265358979" "3.14159265358979"
table(x)
# x
# 3.14159265358979 
#                2 

最新更新