R中“矩阵”中的奇怪行为

时间:2016-05-26 04:27:24

标签: r matrix

我得到奇怪的行为,其中矩阵维度没有按预期工作,这是一个玩具示例

n <- 10     
delt <- 0.00001
s <- n/delt + 1
print(s)

s = 1000001

x <- matrix(0, nrow = s, ncol = 2)
dim(x)

1000000 2

但是,如果我输入

x <- matrix(0, nrow = 1000001, ncol = 2)
dim(x)

我得到了我期望的1000001 2

1 个答案:

答案 0 :(得分:2)

这就是原因:

print(s,digits=20L); ## s is slightly under 1000001 after all
## [1] 1000000.9999999998836
as.integer(s); ## truncates to 1000000
## [1] 1000000

documentation on matrix()没有明确说出来,但nrowncol参数在内部被强制转换为整数。

另见Why are these numbers not equal?