假设我有一个公式和一些值。我正在尝试执行以下 mutate 语句,其形式为result{value}=my_formula({value},col1,col2,col3)
:
library(dplyr)
my_formula <- function(value,col1,col2,col3){
step1 <- value*col1*col2+col3
step2 <- 50000<step1 & step1<100000
return(step2)
}
values=c(2,11,14)
mtcars%>%
mutate(result2=my_formula(2,disp,hp,carb),
result11=my_formula(11,disp,hp,carb),
result14=my_formula(14,disp,hp,carb)) %>%
head
mpg cyl disp hp drat wt qsec vs am gear carb result2 result11 result14
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 FALSE FALSE FALSE
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 FALSE FALSE FALSE
3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 FALSE FALSE FALSE
4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 TRUE FALSE FALSE
5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 FALSE FALSE FALSE
6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 FALSE FALSE FALSE
是否可以自动执行此 mutate 语句?我在实践中使用 10~1000 个值。我也愿意接受其他方法来生成这些列。
您可以使用
sapply
迭代values
与@JilberUrbina的答案类似,但
lapply(values, ..)
直接将 an 放在 a 中mutate
:mutate
这使用了(and )的引用不足的功能summarize
,即如果未命名参数返回 adata.frame
,则这些列将被cbind
'ed 为原始数据。