我有一个矩阵,我想从特定的细胞中分组。矩阵包含数字的混合,一些用科学记数法。
第一个问题是,我想删除科学记数法。
第二个问题是,当我尝试对数字进行子集化时,它会舍入到小数点后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
。
有什么想法吗?