A continuación una muy simple marco de datos de ejemplo que he encontrado en internet. Ejecutando esta en RStudio en mi máquina resulta un mensaje de error:

De Error: Todos los argumentos para cambiar el nombre debe ser nombrado.

La rename función parece ser sencilla, pero no funciona para algunas de las razones y yo no puedo entender por qué.

library("dplyr")

d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
d
#   alpha beta gamma
# 1     1    4     7
# 2     2    5     8
# 3     3    6     9

rename(d, c("beta"="two", "gamma"="three"))

#Error: All arguments to rename must be named.
  • He recibido este mensaje de error cuando tengo tanto plyr y dplyr cargado, y trató de utilizar la rename() comando. Yo fui a esta comunidad mediante plyr::rename()
InformationsquelleAutor Mike | 2015-05-31

5 Comentarios

  1. 55

    Respuesta corta

    Mike, el comando es válido, pero para «plyr» paquete. Si carga el «dplyr» en el mismo script obtendrá el error que usted ha mencionado.

    Por consiguiente, intente esto en su lugar:

    library("plyr")
    d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
    d <- plyr::rename(d, c("beta"="two", "gamma"="three"))

    Algunos extra pensamientos para comprender mejor el problema

    1) search()

    Puede utilizar la función search() para encontrar el orden en el que R búsquedas para funciones/objetos.

    En el siguiente ejemplo, además de las advertencias que se obtiene cuando la carga de dos paquetes con idénticos nombres de función, usted puede llamar a search() para darse cuenta de que R buscará funciones primero «.GlobalEnv» (el entorno por defecto cuando se inicia R), luego en «paquete:dplyr» y luego en «paquete:plyr», y así sucesivamente. Así se obtiene el mensaje de error porque R piensa que usted desea utilizar el rename() función de la dplyr paquete (el cual tiene prioridad sobre plyr porque es más recientemente cargado).

    Y sí, es cierto que al cambiar el orden en el que se carga los paquetes resuelve también el problema, pero que no es un anima solución – por ejemplo, un colega con quien compartir el código, conscientes del error, puede cambiar fácilmente el orden y las cosas complemento de nuevo, o su futuro, olvidando el «fix», se cae en la misma trampa de nuevo – pasa a mí 😀

    library(plyr)
    library(dplyr)
    #> 
    #> Attaching package: 'dplyr'
    #> The following objects are masked from 'package:plyr':
    #> 
    #>     arrange, count, desc, failwith, id, mutate, rename, summarise,
    #>     summarize
    #> The following objects are masked from 'package:stats':
    #> 
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #> 
    #>     intersect, setdiff, setequal, union
    search()
    #>  [1] ".GlobalEnv"        "package:dplyr"     "package:plyr"     
    #>  [4] "package:stats"     "package:graphics"  "package:grDevices"
    #>  [7] "package:utils"     "package:datasets"  "package:methods"  
    #> [10] "Autoloads"         "package:base"
    
    d <- data.frame(alpha=1:3, beta=4:6, gamma=7:9)
    rename(d, c("beta"="two", "gamma"="three"))
    #> All arguments must be named

    Creado en 2019-04-20 por el reprex paquete (v0.2.1)

    2) «conflicto» paquete de rescate de la

    Tales errores son relativamente común, por lo que el conflicto paquete puede ser muy útil aquí. Una vez cargado, puede escribir el nombre de la función que le da errores y obtener algo de información útil para ayudarle a depurar el problema – comprobar este ejemplo a continuación:

    library(conflicted)
    library(plyr)
    library(dplyr)
    
    rename
    #> [conflicted] `rename` found in 2 packages.
    #> Either pick the one you want with `::` 
    #> * dplyr::rename
    #> * plyr::rename
    #> Or declare a preference with `conflict_prefer()`
    #> * conflict_prefer("rename", "dplyr")
    #> * conflict_prefer("rename", "plyr")

    Creado en 2019-04-20 por el reprex paquete (v0.2.1)

    • Esta respuesta debe ser aceptada como correcta.
  2. 19

    Tienes que utilizar sin comillas los nombres del actual nombre de la columna así como el nuevo nombre. También, tenga en cuenta que el nuevo nombre aparecerá en el lado izquierdo.

    Intente esto:

    rename(d, two = beta, three = gamma)
    
      alpha two three
    1     1   4     7
    2     2   5     8
    3     3   6     9
    • Para aquellos que vengan después, el sin comillas parte sólo es cierto cuando de poner un nuevo nombre a la izquierda y el nombre antiguo de la derecha de =, que es el opuesto del documento de ayuda en el ?rename.
    • La orden era mi problema. Gracias!
  3. 4

    También he tenido este error cuando yo estaba tratando de usar rename_all en un conjunto de datos agrupados.

    por ejemplo:

    as_tibble( mtcars ) %>% group_by(cyl) %>% rename_all(toupper) 

    se producirá el error como se indica en el OP.

    Para resolver, utilizar desagrupar()

    as_tibble( mtcars ) %>% group_by(cyl) %>%  ungroup() %>% rename_all(toupper) 
    • Esto no se parece a la OP del tema, pero no era el mío. Gracias.
    • El mismo error se produce con rename_at con la misma corrección. +1
  4. 2

    Si usted está usando dplyr en lugar de plyr la gramática es un poco diferente. Yo tenía este problema y resuelto mediante:

    df <- df %>% rename(new_name=old_name)

    O, en su caso:

    d <- d %>% rename(two=beta,three=gamma)
  5. 0

    Aunque la pregunta es vieja y ha sido contestado, yo se enfrentó al mismo problema. La instalación de «remodelar» el paquete se ha solucionado el problema para mí.

    install.packages("reshape")
    library(reshape)

    Ahora el siguiente código debería funcionar bien.

    rename(d, c(beta="two", gamma="three"))

    Gracias.

Dejar respuesta

Please enter your comment!
Please enter your name here