0

假设我在 R 中有一个用“1”填充的整数矩阵。

当我将它除以 2 时,它将被转换为双矩阵。

如何强制 R 不更改类型矩阵?(所以矩阵将用 0 而不是 0.5 填充)。

确实可以round稍后使用函数,但它会显着降低速度。

4

3 回答 3

1

您可以使用欧几里得除法,%/%并确保除以2L,而不是2

x <- matrix(1L, 5, 5)
str( x %/% 2L )
# int [1:5, 1:5] 0 0 0 0 0 0 0 0 0 0 ...
于 2013-09-12T08:03:51.780 回答
1

您可以使用整数除法 (%/%) 而不是普通除法 (/):

1%/%2 = 0
1/2=0.5
于 2013-09-12T08:03:01.737 回答
0

只是告诉它保持整数。它对您的运行时执行没有影响。

system.time(mym<-apply(matrix(1,1000,1000), 1:2, function(x) as.integer(x/2)))
# user  system elapsed 
# 4.46    0.01    4.48 
system.time(mym<-apply(matrix(1,1000,1000), 1:2, function(x) x/2))
# user  system elapsed 
# 4.44    0.00    4.46 

因此,只需使用 as.integer 表达式并将其保留为整数。

于 2013-09-12T08:07:41.897 回答