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.

Extraer una columna del dataframe usando $ versus corchetes [ ] en R.

Tengo una función en la cual necesito extraer una columna. Cuando uso dataframe$columna1[i], la función devuelve un error, pero cuando uso dataframe[, columna1][i], funciona. ¿Por qué no puedo simplemente usar dataframe$columna vs dataframe[, columna]??

function1 <- function(data, x, y) {

        data <- arrange(data, x)

        ylist <- NULL

        for(i in 1:nrow(data)){
                x0 <- data[, x][i] 
                data$d0 <- abs(data[,x] - x0)
                yi <- data %>% arrange(d0) %>% select(y) %>% unlist() %>% mean()
                ylist <- c(ylist, yi)

        }
        return(ylist)
}

Si escribo la función de la siguiente manera, devolverá un error: Error in $<-.data.frame(*tmp*, "d0", value = numeric(0)) : la sustitución tiene 0 filas, los datos tienen 500

function1 <- function(data, x, y) {

            data <- arrange(data, x)

            ylist <- NULL

            for(i in 1:nrow(data)){
                    x0 <- data$x[i] 
                    data$d0 <- abs(data$x - x0)
                    yi <- data %>% arrange(d0) %>% select(y) %>% unlist() %>% mean()
                    ylist <- c(ylist, yi)

            }
            return(ylist)
    }
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual no puedes usar dataframe$columna1[i] en esta función es porque solo extraerá un solo valor de la columna para esa fila específica, pero estás intentando modificar toda la columna al agregar una nueva variable d0 en ella. Esto genera un error porque estás intentando reemplazar 0 filas con una nueva variable que tiene una longitud diferente.

    Por otro lado, usando dataframe[, columna1][i] extraerás un subconjunto de la columna para la fila específica, sin modificar la columna original. Esto te permite crear una nueva variable d0 sin afectar la columna original y evita el error.

    Siempre se recomienda usar la sintaxis dataframe[, columna1] al extraer un subconjunto de una columna, especialmente cuando se modifica la columna o se trabaja con subconjuntos de los datos, para evitar cualquier error o comportamiento inesperado.

Comments are closed.