在R中使用`crossprod`时回收?

时间:2018-05-16 04:32:51

标签: r function

虽然我的功能运行正常,但我想知道在运行简单功能时如何避免下面的警告?

  

警告消息:在numer / denom中:回收长度为1的数组   不推荐使用向量数组运算。使用c()或as.vector()   代替。

qq <- function(f, df1, df2, N){
       denom <- crossprod(df1, f) + df2 + 1  # I suspect warning is from here?
       numer <-  (df1 * (f - 1))
       return(numer / denom)
}

# Example of use:
qq(f = c(84.11, 4.05, 8.38), df1 = c(3, 1, 3), df2 = 24, N = 32)

1 个答案:

答案 0 :(得分:1)

警告发生在return功能。

尝试

return(numer / as.numeric(denom))

原因是denom是一个矩阵,number是一个原子向量。 我也认为不会有警告,但看起来你所做的操作已经被折旧了。