假设我在R中有一个填充“1”的整数矩阵。
当我将它除以2时,它将被转换为双矩阵。
如何强制R不更改类型矩阵? (因此矩阵将填充0而不是.5)。
我确实可以在以后使用round
功能,但它会显着降低速度。
答案 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表达式并保持整数。