仅在> 0.001时打印实际P值

luc*_*ano 4 latex r knitr

考虑这两个t检验的P值

set.seed(1)
x <- c(rnorm(50,1), rnorm(50, 2))
y <- (c(rep("a", 50), rep("b", 50)))

t.test(x ~ y)$p.value

[1] 1.776808e-07

set.seed(2)
x <- c(rnorm(50), rnorm(50))
y <- (c(rep("a", 50), rep("b", 50)))

t.test(x ~ y)$p.value

[1] 0.3922354
Run Code Online (Sandbox Code Playgroud)

第一个P值<0.001,第二个值> 0.001.如果P值恰好<0.001,我可以得到R将P值打印为<0.001.如果P值恰好大于0.001,我可以让R打印出实际的P值吗?因此,第一次t检验"<0.001"的结果应打印为,第二次t检验的结果应打印为0.3922354.

我正在使用knitr我的论文将R代码转换为乳胶.我的规则是只有P值> 0.001才应打印为实际P值.

Mar*_*nov 5

只需使用if语句:

p_val <- t.test(x,y)$p.value;
if(p_val>=0.001) {
  print(p_val)
} else {
  print("<0.001")
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你应该想到一个ifelse类型的声明.认为这可能在乳胶文档中更紧凑:`P < - t.test(x~y)$ p.value; ifelse(P> 0.001,P,"<0.001")` (5认同)
  • @luciano,除非P是大于1的长度向量,否则`if(P> 0.001)P else"<0.001"是没有错的,并且可以认为它更安全,因为如果向量是意外地长于一个. (2认同)