“dims [product xx] do not match the length of object [xx]” error in using R function `outer`

前端 未结 2 1297
说谎
说谎 2020-12-12 02:43
x <- 1:9
names(x) <- paste0(\"x\",x)
y <- 2:5
names(y) <- paste0(\"y\",y)

fun1      <-function(a, b) {paste(class(a),b, sep = \"**\")} #works
funErro         


        
2条回答
  •  甜味超标
    2020-12-12 03:40

    I think this comes because the resulting matrix from outer expects to be the same dimensions as your inputs, however, class(a) is only length 1, therefor the matrix dimensions do not match. Try

    funError2 <- function(a,b){paste(rep(class(a), length(a)),rep(class(b), length(b)), sep = "**")}
    outer(x,y, "funError2")
    #>    y2                 y3                 y4                
    #> x1 "integer**integer" "integer**integer" "integer**integer"
    #> x2 "integer**integer" "integer**integer" "integer**integer"
    #> x3 "integer**integer" "integer**integer" "integer**integer"
    #> x4 "integer**integer" "integer**integer" "integer**integer"
    #> x5 "integer**integer" "integer**integer" "integer**integer"
    #> x6 "integer**integer" "integer**integer" "integer**integer"
    #> x7 "integer**integer" "integer**integer" "integer**integer"
    #> x8 "integer**integer" "integer**integer" "integer**integer"
    #> x9 "integer**integer" "integer**integer" "integer**integer"
    #>    y5                
    #> x1 "integer**integer"
    #> x2 "integer**integer"
    #> x3 "integer**integer"
    #> x4 "integer**integer"
    #> x5 "integer**integer"
    #> x6 "integer**integer"
    #> x7 "integer**integer"
    #> x8 "integer**integer"
    #> x9 "integer**integer"
    

    Created on 2018-09-13 by the reprex package (v0.2.0).

提交回复
热议问题