从R中的矩阵子集和舍入问题

时间:2016-02-04 12:42:10

标签: r matrix rounding subset

我有一个矩阵,我想从特定的细胞中分组。矩阵包含数字的混合,一些用科学记数法。

第一个问题是,我想删除科学记数法。

第二个问题是,当我尝试对数字进行子集化时,它会舍入到小数点后1位。但是,我想保留2位小数。很明显,它仅对数字执行此操作,舍入时将以0结束。

我已经使用format()options("scipen" = 999)查看了R rounds decimal values in matrix when subsetting以及其他一些关于格式化矩阵输出的SO帖子。这些都不适合我。

这是一个可重复性最小的例子:

# Create matrix
x <- c(3.3616295, 1.085965, 2.425796e+06, 2.049605e+180, 1.000000, 2.8585595, 3.953233)
y <- c(0.7991626, 1.217628, 3.202742e-01, 1.496401e+173, 1.291188, 0.5426498, 1.176930)
mx1 <- cbind(x, y)

# Round to 2 decimal places
mx2 <- round(mx1, 2)

mx2
             x             y
[1,]  3.360000e+00  8.000000e-01
[2,]  1.090000e+00  1.220000e+00
[3,]  2.425796e+06  3.200000e-01
[4,] 2.049605e+180 1.496401e+173
[5,]  1.000000e+00  1.290000e+00
[6,]  2.860000e+00  5.400000e-01
[7,]  3.950000e+00  1.180000e+00

# Extract value from row 1, col 2
mx2[1, 2]

 y 
0.8 

# The above value was rounded to one decimal place, not 2.
# Try using format()
mx3 <- format(mx2, digits = 2, scientific = FALSE)
mx3
     x          y         
[1,] " 3.4e+00" " 8.0e-01"
[2,] " 1.1e+00" " 1.2e+00"
[3,] " 2.4e+06" " 3.2e-01"
[4,] "2.0e+180" "1.5e+173"
[5,] " 1.0e+00" " 1.3e+00"
[6,] " 2.9e+00" " 5.4e-01"
[7,] " 4.0e+00" " 1.2e+00"

这仍然不是我想要的。科学记数法应该消失,当我提取我的价值时,它应该是0.80

有什么想法吗?

0 个答案:

没有答案