使用sprintf对矩阵进行四舍五入,同时保留R中的尾随零

使用sprintf对矩阵进行四舍五入,同时保留R中的尾随零,r,latex,R,Latex,从我可以看出,如果在矩阵上使用sprintf,它将转换为一个向量并返回一个向量,在这个过程中,去掉行和列名。我想将一个大矩阵四舍五入到小数点后一位,但保留后面的零。下面是一个小例子 tbl <- matrix(c(2.4, 3.97, 1.02, 2.3), 2, 2) colnames(tbl) <- letters[1:2] rownames(tbl) <- letters[3:4] tbl_round <- round(tbl, digits = 1) t

从我可以看出,如果在矩阵上使用sprintf,它将转换为一个向量并返回一个向量,在这个过程中,去掉行和列名。我想将一个大矩阵四舍五入到小数点后一位,但保留后面的零。下面是一个小例子

tbl <- matrix(c(2.4, 3.97, 1.02, 2.3), 2, 2)
colnames(tbl) <- letters[1:2]
rownames(tbl) <- letters[3:4]

tbl_round <- round(tbl, digits = 1)    
tbl_round
#     a   b
# c 2.4 1.0
# d 4.0 2.3
tbl_round[1,2]
# [1] 1

tbl_sprintf <- sprintf("%.1f", round(tbl, 1))
tbl_sprintf
# [1] "2.4" "4.0" "1.0" "2.3"
tbl_sprintf[3]
# [1] "1.0"

tbl您可以使用原始矩阵的
dim
属性来指定输出矩阵的
dim
属性:

tbl[] <- `dim<-`(sprintf("%.1f", tbl), dim(tbl))
tbl
#   a     b    
# c "2.4" "1.0"
# d "4.0" "2.3"

tbl[]来自
sprintf
的输出是字符类。那不是个问题吗<代码>待定[]谢谢。这是什么dim@bsbk
DIM是有用的。似乎这种结构,你把一个函数放在赋值箭头旁边的引号中,通常可以使用,因为,例如,'colnames@bsbk我无法为您指出特定的帮助文件,但它基本上适用于任何赋值函数(
names)。听起来不错。顺便说一句,我认为您缺少dim中的引号