我有一个数据框架,其中有一列p值,我想对这些p值进行选择。
> pvalues_anova
[1] 9.693919e-01 9.781728e-01 9.918415e-01 9.716883e-01 1.667183e-02
[6] 9.952762e-02 5.386854e-01 9.997699e-01 8.714044e-01 7.211856e-01
[11] 9.536330e-01 9.239667e-01 9.645590e-01 9.478572e-01 6.243775e-01
[16] 5.608563e-01 1.371190e-04 9.601970e-01 9.988648e-01 9.698365e-01
[21] 2.795891e-06 1.290176e-01 7.125751e-01 5.193604e-01 4.835312e-04
选择方法:
anovatest<- results[ - which(results$pvalues_anova < 0.8) ,]
如果我在r中使用它,该函数工作得很好。但如果我在另一个应用程序(银河)中运行它,没有e-01的数字,例如4.835312e-04不会被抛出。
有没有另一种方法来表示p值,比如0.0004835312而不是4.835312e-04?
我还发现prettyNum(…, scientific = FALSE)函数,当我不想要后面的0时,它可以用于打印。注意,这些函数用于打印,也就是说,这些函数的输出是字符串,而不是数字。
p_value <- c(2.45496e-5, 3e-17, 5.002e-5, 0.3, 123456789.123456789)
format(p_value, scientific = FALSE)
#> [1] " 0.00002454960000000" " 0.00000000000000003"
#> [3] " 0.00005002000000000" " 0.29999999999999999"
#> [5] "123456789.12345679104328156"
format(p_value, scientific = FALSE, drop0trailing = TRUE)
#> [1] " 0.0000245496" " 0.00000000000000003"
#> [3] " 0.00005002" " 0.29999999999999999"
#> [5] "123456789.12345679104328156"
# Please note that the last number's last two digits are rounded:
prettyNum(p_value, scientific = FALSE, digits = 16)
#> [1] "0.0000245496" "0.00000000000000003" "0.00005002"
#> [4] "0.3" "123456789.1234568"
我还发现prettyNum(…, scientific = FALSE)函数,当我不想要后面的0时,它可以用于打印。注意,这些函数用于打印,也就是说,这些函数的输出是字符串,而不是数字。
p_value <- c(2.45496e-5, 3e-17, 5.002e-5, 0.3, 123456789.123456789)
format(p_value, scientific = FALSE)
#> [1] " 0.00002454960000000" " 0.00000000000000003"
#> [3] " 0.00005002000000000" " 0.29999999999999999"
#> [5] "123456789.12345679104328156"
format(p_value, scientific = FALSE, drop0trailing = TRUE)
#> [1] " 0.0000245496" " 0.00000000000000003"
#> [3] " 0.00005002" " 0.29999999999999999"
#> [5] "123456789.12345679104328156"
# Please note that the last number's last two digits are rounded:
prettyNum(p_value, scientific = FALSE, digits = 16)
#> [1] "0.0000245496" "0.00000000000000003" "0.00005002"
#> [4] "0.3" "123456789.1234568"
总结所有现有的答案
(并补充了我的一些观点)
注意:在下面的解释中,value是要以某种(整数/浮点)格式表示的数字。
解决方案一:
options(scipen=999)
解决方案二:
format(value, scientific=FALSE);
解决方案三:
as.integer(value);
解决方案四:
你可以使用不以科学计数法打印的整数。你可以在数字后面加上一个“L”来指定你的数字是一个整数
paste(100000L)
将打印100000份
解决方案五:
使用'sprintf()'严格控制格式
sprintf("%6d", 100000)
将打印100000份
解决方案六:
prettyNum(value, scientific = FALSE, digits = 16)