将整数矩阵保留在R中作为整数矩阵

时间:2013-09-12 07:54:22

标签: r matrix

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

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

如何强制R不更改类型矩阵? (因此矩阵将填充0而不是.5)。

我确实可以在以后使用round功能,但它会显着降低速度。

3 个答案:

答案 0 :(得分:1)

您可以使用整数除法(%/%)代替正常除法(/):

1%/%2 = 0
1/2=0.5

答案 1 :(得分: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 ...

答案 2 :(得分: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表达式并保持整数。