我尝试过不同的函数将小数四舍五入为两位数,例如format()、formatC()和signif()。round()他们中没有一个人能够真正将所有小数四舍五入到小数点后两位。
例如,我的数据框 DF 有三列:Index、PDF 和 CDF:
Index PDF CDF
1 -1.00 8.306360e-07 8.306360e-09
2 -0.99 8.332774e-07 1.663913e-08
3 -0.98 8.411712e-07 2.505085e-08
4 -0.97 8.542267e-07 3.359311e-08
5 -0.96 8.722951e-07 4.231606e-08
6 -0.95 8.951719e-07 5.126778e-08
7 -0.94 9.226012e-07 6.049380e-08
8 -0.93 9.542808e-07 7.003660e-08
9 -0.92 9.898679e-07 7.993528e-08
10 -0.91 1.028986e-06 9.022514e-08
...
...
...
Run Code Online (Sandbox Code Playgroud)
该列Index是一个向量,从 -1.00 到 10.00。任何连续元素之间的差异为 0.01。这意味着unique(diff(Index))应该只返回一个值,并且必须是 0.01。不过,unique(diff(Index))可以返回几个0.01。
我的目的是计算列中任意两个元素之间的差异CDF,并通过指示它们来选择这两个元素Index。例如,
a<-DF$CDF[DF$Index==(r+dr)];
b<-DF$CDF[DF$Index==(r-dr)];
res<-a-b; …Run Code Online (Sandbox Code Playgroud)