为什么我不能绕过cor.test

时间:2015-08-31 18:45:37

标签: r

我正在研究测量月与月之间的相关性。来自Mitchell数据的温度(附带alr3包)。我想将系数四舍五入到最接近千分之一,但当我在代码中添加round()时出现了这个错误:

Error in round(cor.test(Month, Temp), 3) : 
  non-numeric argument to mathematical function

但是,如果我将cor.testcor交换进行舍入工作。 cor.test导致问题怎么办?我如何调整我的代码(如下)以允许舍入工作?

with(Mitchell, round(cor.test(Month, Temp), 3))

1 个答案:

答案 0 :(得分:2)

请参阅cor.test的帮助文件。 cor.test函数返回一个列表,其中包含htest类属性,而不是圆形所需的数字向量。

帮助文件中的示例:

x<-cor.test(~ CONT + INTG, data = USJudgeRatings)

is.numeric(x)
#> [1] FALSE
class(x)
#> [1] "htest"

您可能只想使用不同数量的数字打印,在这种情况下,您可以查看此类的打印功能。

getAnywhere(print.htest)

但是,即使存在digits参数,也仅限于p值。所以,你只需要自己进行四舍五入:

structure(rapply(z,function(x) if(is.numeric(x)) round(x,3) else x,how="replace"),
  class="htest")
        Pearson's product-moment correlation

data:  CONT and INTG
t = -0.861, df = 41, p-value = 0.395
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.417  0.174
sample estimates:
   cor 
-0.133