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)
}
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 variabled0
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 variabled0
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.