Это не тот же вопрос, что и , это , а расширение. Какой самый быстрый способ создать несколько переменных на основе тех, которые вы создали в mutate
, и динамически присваивать им имена. Э.Г.
library(dplyr)
df<- data.frame(gg = rep(6:10),
ba = rep(1:5))
df
gg ba
1 6 1
2 7 2
3 8 3
4 9 4
5 10 5
желаемый вывод:
df_new
gg ba diff.1 diff.2 sum_dif.1 sum_dif.2
1 6 1 5 10 25 50
2 7 2 5 10 25 50
3 8 3 5 10 25 50
4 9 4 5 10 25 50
5 10 5 5 10 25 50
После аналогичного вопроса, на который я ссылался, я могу получить diff.1
diff.2
myfun <- function(df, n) {
varname <- paste("diff", n , sep=".")
mutate(df, !!varname := (gg - ba)*n)
}
for(i in 1:2) {
df <- myfun(df, n=i)
}
что дает
df
gg ba diff.1 diff.2
1 6 1 5 10
2 7 2 5 10
3 8 3 5 10
4 9 4 5 10
5 10 5 5 10
Но не уверен, как передать сгенерированную переменную в другую строку в mutate, я подумал что-то вроде этого:
myfun <- function(df, n) {
varname <- paste("diff", n , sep=".")
varname2 <- paste("sum_dif", n , sep=".")
mutate(df, !!varname := (gg - ba)*n,
!!varname2 := sum(!!varname))
}
Также рады получить другие решения, может быть, data.table
? Спасибо