Como corrigir: erro em n(): esta função não deve ser chamada diretamente


Um erro que você pode encontrar no R é:

 Error in n(): This function should not be called directly

Este erro geralmente ocorre quando você tenta usar a função n() do pacote dplyr , mas o pacote plyr é carregado após o pacote dplyr .

Este tutorial explica exatamente como corrigir esse erro.

Como reproduzir o erro

Suponha que temos o seguinte quadro de dados em R:

 #define data frame
df <- data. frame (team=rep(c('A', 'B'), each= 5 ),
                 points=c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20),
                 assists=c(4, 7, 11, 16, 22, 29, 38, 49, 63, 80))

#view data frame
df

   team points assists
1 to 2 4
2 to 4 7
3 to 6 11
4 to 8 16
5 to 10 22
6 B 12 29
7 B 14 38
8 B 16 49
9 B 18 63
10 B 20 80

Agora suponha que tentamos usar a função summary() de dplyr para contar o número de linhas, agrupadas por equipe:

 library (dplyr)
library (plyr)

#attempt to count rows by team
df %>%
  group_by(team) %>%
  summarize(count = n())

Error in n(): This function should not be called directly 

Estamos recebendo um erro porque carregamos o pacote plyr após o pacote dplyr , o que está causando problemas.

Como corrigir o erro

A maneira de corrigir esse erro é simplesmente usar dplyr:summarize para que R saiba exatamente de qual pacote você deseja usar a função de resumo :

 library (dplyr)
library (plyr)

#count rows by team
df %>%
  group_by(team) %>%
  dplyr::summarize(count = n())

# A tibble: 2 x 2
  team count
   
1 to 5
2 B 5

Observe que desta vez podemos contar o número de linhas agrupadas por equipe sem erros, pois usamos dplyr::summarize para realizar o resumo.

Recursos adicionais

Os tutoriais a seguir explicam como resolver outros erros comuns em R:

Como corrigir em R: erro em as.Date.numeric(x): “origin” deve ser fornecido
Como corrigir: Erro em stripchart.default(x1,…): Método de plotagem inválido
Como corrigir: erro em eval (predvars, data, env): objeto ‘x’ não encontrado

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *