R:单独格式化向量中的数字
Posted
技术标签:
【中文标题】R:单独格式化向量中的数字【英文标题】:R: Format Numbers in a Vector Individually 【发布时间】:2014-08-08 01:11:35 【问题描述】:我在数据框的一列中有一系列 10 个 p 值:
df$p <- c(0.00000005, 0.000001, 0.0001, 0.001, 0.01, 0.05, 0.1, 0.2, 0.5, 1)
由于以十进制读取较大的 p 值和以科学计数法读取较小的 p 值更容易,我希望它的格式如下:
5e-8, 1e-6, 1e-4, 0.001, 0.01, 0.05, 0.1, 0.2, 0.5, 1
但无论我如何使用options(scipen=whatever)
和format(df$p, scientific=whatever)
,R 都会以相同的方式显示所有元素(即全部以十进制表示,或全部以科学计数法表示)。
我想要的是让 R 对这个向量的每个元素单独应用科学惩罚,因此它们显示为十进制或 SN,具体取决于哪个可以节省更多空间。
【问题讨论】:
mapply(format, df$p)
或 sapply(df$p, format)
是否足够?结果是一个字符向量。
@Frank,两者都很好用! @rawr,format.pval(df$p, digits=8, drop0trailing=T)
工作!
【参考方案1】:
使用以下选项
> p <- c(0.00000005, 0.000001, 0.0001, 0.001, 0.01, 0.05, 0.1, 0.2, 0.5, 1)
> options(scipen = 999)
> p
[1] 0.00000005 0.00000100 0.00010000 0.00100000 0.01000000 0.05000000 0.10000000 0.20000000 0.50000000 1.00000000
> options(scipen = 1)
> p
[1] 5e-08 1e-06 1e-04 1e-03 1e-02 5e-02 1e-01 2e-01 5e-01 1e+00
也许您需要将选项(scipen)放在脚本的开头。或者你可以使用
> mapply(format, p)
[1] "5e-08" "1e-06" "0.0001" "0.001" "0.01" "0.05" "0.1" "0.2" "0.5" "1"
【讨论】:
mapply(format, df$p)
是我想要的。正如其他 cmets 所指出的,sapply(df$p, format)
和 format.pval(df$p, digits=8, drop0trailing=T)
也可以。以上是关于R:单独格式化向量中的数字的主要内容,如果未能解决你的问题,请参考以下文章
R语言boot包中的boot函数格式以及参数说明boot.ci函数格式以及参数说明使用boot包进行自助法Bootstrapping分析的步骤计算统计量或者统计向量的置信区间