假设我在 R 中有一个用“1”填充的整数矩阵。
当我将它除以 2 时,它将被转换为双矩阵。
如何强制 R 不更改类型矩阵?(所以矩阵将用 0 而不是 0.5 填充)。
确实可以round
稍后使用函数,但它会显着降低速度。
您可以使用欧几里得除法,%/%
并确保除以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 ...
您可以使用整数除法 (%/%) 而不是普通除法 (/):
1%/%2 = 0
1/2=0.5
只是告诉它保持整数。它对您的运行时执行没有影响。
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 表达式并将其保留为整数。