Eu quero usar dplyr::mutate()
para criar várias novas colunas em um quadro de dados. Os nomes das colunas e seu conteúdo devem ser gerados dinamicamente.
Dados de exemplo da íris:
library(dplyr)
iris <- tbl_df(iris)
Eu criei uma função para alterar minhas novas colunas da Petal.Width
variável:
multipetal <- function(df, n) {
varname <- paste("petal", n , sep=".")
df <- mutate(df, varname = Petal.Width * n) ## problem arises here
df
}
Agora eu crio um loop para construir minhas colunas:
for(i in 2:5) {
iris <- multipetal(df=iris, n=i)
}
No entanto, como mutate acha que varname é um nome literal de variável, o loop cria apenas uma nova variável (chamada varname) em vez de quatro (chamada petal.2 - petal.5).
Como posso mutate()
usar meu nome dinâmico como nome de variável?
dplyr
tem uma vinheta todo na avaliação não-padrão
mutate_
, e realmente não é óbvio pelas outras funções como usá-la.