es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Asigna el contenido del índice del bucle que no funciona en R.

Estoy intentando refactorizar mi código en lugar de crear un bucle para cada elemento en la lista de dir. Necesito crear un nuevo dataframe y asignarle el nombre según el contenido en dir lista mientras recorro. Pero me da el error “Error in paste(i) <- AllData: no se pudo encontrar la función “paste<-“, lo cual no entiendo.

for (i in filesNames) {
  for (j in dir_list) {

        data <- read_table(paste(workDir, j, "/", i, ".txt", sep = ""))
        data <- data %>% mutate(quarter = j)
        if (j == dir_list[1]) {
          AllData <- data 
        } else {
          AllData <- bind_rows(AllData, data)
        } 
        if (j ==  dir_list[length(dir_list)]) {
          paste(i) <- AllData;
        }
  }
}  
Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “Error in paste(i) <- AllData: no se pudo encontrar la función “paste<-” sugiere que el código está intentando usar una función llamada “paste<-” que no existe.

    El código está intentando usar nombres de variables dinámicas, donde el nombre de la variable se basa en el valor de otra variable. Específicamente, la línea paste(i) <- AllData; está intentando crear una nueva variable con un nombre basado en el valor de la variable “i” y asignarle AllData. Sin embargo, esta no es la sintaxis correcta para crear nombres de variables dinámicas en R.

    Para refactorizar este código, podría ser mejor utilizar una lista para almacenar los dataframes en lugar de crear variables separadas con nombres dinámicos. Por ejemplo, al principio del bucle, podría crear una lista vacía:

    allDataList <- list()

    Luego, dentro del bucle, en lugar de asignar a un nombre de variable dinámico, podría agregar cada dataframe a la lista utilizando el operador “[[ ]]”:

    allDataList[[paste(i)]] <- AllData

    Luego, una vez que el bucle haya terminado, podría acceder a los dataframes por nombre utilizando el mismo operador “[[ ]]”:

    df1 <- allDataList[["nombre_del_dataframe"]]

    Este enfoque evita el uso de nombres de variables dinámicas y facilita el trabajo con los dataframes más adelante.

Comments are closed.