Desde que aqui esteja escrito que eu posso passar {{colname}}
para mutate
, onde colname
está uma variável que contém um nome de coluna, não consigo descobrir por que esse código não funciona:
testdf <- data.frame(a=c("Hello", "Hi", "Howy"))
varname <- "a"
testdf %>% mutate(b=nchar({{varname}}))
Ele retorna o número de caracteres na carta a
:
a b
1 Hello 1
2 Hi 1
3 Howy 1
Como posso contar o número de caracteres em uma coluna e atribuir o valor a outra coluna, quando o nome da primeira coluna é salvo em uma variável?
Como
varname
é um personagem, você pode usar o.data
pronome:O problema surge porque
{{varname}}
não avalia o conteúdo da variávelvarname
quando você a usa dentro delamutate()
.Neste caso,
{{varname}}
é tratado literalmente, e é por isso que você só vê1
cada linha.Para resolver isso, você pode simplesmente usar o R base para uma solução direta. Veja como você pode fazer isso:
SAÍDA
testdf[[varname]]
recupera a coluna especificada porvarname
fromtestdf
.nchar(testdf[[varname]])
conta os caracteres em cada elemento dessa coluna.testdf$b <- ...
atribui essas contagens a uma nova colunab
emtestdf
.Como é projetado como
dando
Como o usuário @AndreWildberg aponta em um comentário, você precisará trocar para
dando