某些自定义函数在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)