小编one*_*eko的帖子

使用mutate的自定义函数不起作用

某些自定义函数在mutate中不起作用.你能解释为什么calc2和calc3不起作用,以及如何解决它们才能正常工作?

    library(dplyr)
    m <- matrix(c(1,2,3,4,5,6,7,8,9), nrow = 3, byrow = T)        

    calc <- function(x1,x2,x3){ #scalar
      return(x1 + x2 + x3)
    }

    calc2 <- function(x){ #vector
      return(x[1] + x[2] + x[3])
    }

    calc3 <- function(x){ #list
      x <- unlist(x)
      return(sum(x))
    }

    as.data.frame(m) %>% 
      mutate(val  = calc(V1,V2,V3), #OK
             val2 = calc2(c(V1,V2,V3) ), #NG
             val3 = calc3(list(V1,V2,V3))) #NG
Run Code Online (Sandbox Code Playgroud)

以下是输出:

    V1 V2 V3 val val2 val3
    1  2  3   6   12   45
    4  5  6  15   12   45
    7  8  9  24   12   45
Run Code Online (Sandbox Code Playgroud)

r dplyr

2
推荐指数
2
解决办法
1017
查看次数

标签 统计

dplyr ×1

r ×1