本文介绍了带有mutate的自定义函数不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
某些自定义功能无法在mutate中使用。您能解释一下
为什么calc2和calc3不能正常工作,以及如何使它们正常工作吗?
Some custom functions do not work in mutate. Would you explainwhy calc2 and calc3 dont work, and how to fix them to work properly?
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
以下是输出:
V1 V2 V3 val val2 val3
1 2 3 6 12 45
4 5 6 15 12 45
7 8 9 24 12 45
推荐答案
我们可以做到这一点而无需更改使用 rowwise
We can do this without changing the OP's functions using rowwise
library(dplyr)
as.data.frame(m) %>%
rowwise() %>%
mutate(val = calc(V1, V2, V3),
val2 = calc2(c(V1, V2, V3)),
val3 = calc3(list(V1, V2, V3)))
# A tibble: 3 × 6
# V1 V2 V3 val val2 val3
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 1 2 3 6 6 6
#2 4 5 6 15 15 15
#3 7 8 9 24 24 24
这篇关于带有mutate的自定义函数不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!