每当我格式化表格时:
example <- sample(LETTERS, replace = T)
format(table(example), scientific = T)
数字变成了字符。如何在不诉诸format()
的情况下告诉as.numeric()
我的对象是数字?我在函数的帮助页面中找不到任何此类参数。它说format()
对象通常是数字的,所以我想我错过了一些基本的命令。
我的真实数据如下:
> xtabs(...)
PRU/DF PSU/ILH PSU/JFA PSU/MCL PSU/SRM PSU/ULA
1.040771e+01 0.000000e+00 2.280347e-01 0.000000e+00 0.000000e+00 8.186240e+00
PSU/URA PSU/VGA PU/AC PU/AM PU/AP PU/BA
0.000000e+00 1.534169e+01 8.184747e+01 1.410106e+01 1.028717e+01 1.099289e+00
PU/GO PU/MA PU/MG PU/MT PU/PA PU/PI
0.000000e+00 4.369910e+01 5.350849e+00 0.000000e+00 4.706721e-01 0.000000e+00
我想让控制台打印数字更漂亮,以便我的同事不会心脏病发作。这就是我想出来的:
> format(xtabs(...), scientific = F, digits = 1)
PRU/DF PSU/ILH PSU/JFA PSU/MCL PSU/SRM PSU/ULA PSU/URA PSU/VGA
"10.4077" " 0.0000" " 0.2280" " 0.0000" " 0.0000" " 8.1862" " 0.0000" "15.3417"
PU/AC PU/AM PU/AP PU/BA PU/GO PU/MA PU/MG PU/MT
"81.8475" "14.1011" "10.2872" " 1.0993" " 0.0000" "43.6991" " 5.3508" " 0.0000"
PU/PA PU/PI PU/RO PU/RR PU/TO PRU/RJ PSU/CPS PSU/NRI
" 0.4707" " 0.0000" "40.6327" "10.3247" " 0.0000" "10.9644" " 0.0000" "55.4122"
我想摆脱这些引用,以便数据在控制台上看起来更好。
答案 0 :(得分:1)
格式返回字符向量,因此通常是预期的。我认为,你的问题是因为整数向量c( 1, 2, 3)
的“格式”表示是"1" "2" "3"
,而数字的表示(真实)向量c( 1, 2, 3 )
是"1e+00" "2e+00" "3e+00"
。
请考虑以下事项:
format( 1:10 )
format( 1:10, scientific= TRUE )
format( as.numeric( 1:10 ), scientific= TRUE )
因此,请尝试
format( as.numeric( table( example ) ), scientific= TRUE )
不幸的是,你不能省略as.numeric
,因为table
生成整数值,你需要真实。
答案 1 :(得分:1)
format
函数返回字符向量,其数字现在按照您的规范“格式化”。如果将结果转换回数字,则现在任何格式都将丢失。我认为你的问题可能是创建格式化输出和打印格式化输出之间的区别。当您创建一个对象但不对其执行任何操作时,将使用默认参数自动打印该对象,其中一个默认设置是在字符串周围添加引号。如果您不想要引号,那么只需自己致电print
并告诉它不要包含引号:
> example <- sample(LETTERS, replace = T)
> print(format(table(example), scientific = T), quote=FALSE)
example
B E F G H J K L Q S T U W X Z
1 1 1 2 1 2 3 1 1 1 3 1 1 5 2
如果您的主要目标是不使用科学记数法,那么您应该查看zapsmall
函数,该函数将极小的值(通常是切换到科学记数法的罪魁祸首)转换为零。或者options(scipen=5)
(或除5以外的其他值),这将降低在后续打印中切换到科学记数法的可能性。
答案 2 :(得分:0)
根据您对@ January的答案的评论,您似乎只是在寻找c(table(example))
。
答案 3 :(得分:0)
这是我找到的解决方案:
View(format(xtabs(...), scientific = F, digits = 1))
该表将出现在另一个窗口而不是控制台内部,就像我原本想要的那样,但它解决了我快速显示漂亮数据而不诉诸长命令的问题。欢迎更优雅的解决方案!