En este artículo, nos enfocamos en cómo podemos corregir el error » dim(X) debe tener una longitud positiva» en el lenguaje de programación R.
dim(X) debe tener una longitud positiva:
Este es un tipo de error lanzado por un compilador R. El compilador R produce el error en la forma:
Error al aplicar (marco de datos $columna_encabezado1, valor_numérico, media):
dim(X) debe tener una longitud positiva
El compilador R produce un error de este tipo cuando usamos la función apply() para calcular algún valor para una columna de un marco de datos, pero en lugar del marco de datos, se pasa un vector como argumento.
Cuándo puede ocurrir este error:
En primer lugar, creemos un marco de datos que tenga tres columnas:
Ejemplo:
R
# Create a data frame dataframe <- data.frame(score=c(91, 92, 87, 80, 79), marks=c(97, 90, 81, 88, 89), performance=c(80, 97, 86, 57, 88)) # Print data frame dataframe
Producción:
Ahora considere que queremos usar la función apply() para calcular el valor medio de la columna «marcas»:
Ejemplo:
Con este ejemplo, el compilador R produce este error porque la función apply() se puede aplicar solo en un marco de datos o array, pero aquí la estamos usando en una columna en particular.
R
# Create a data frame dataframe <- data.frame(score=c(91, 92, 87, 80, 79), marks=c(97, 90, 81, 88, 89), performance=c(80, 97, 86, 57, 88)) # Try to calculate mean of 'points' column apply(dataframe$marks, 2, mean)
Producción:
Cómo corregir el error:
Podemos corregir este error simplemente pasando el nombre del marco de datos a la función apply() en lugar de pasar una columna en particular.
Ejemplo:
Este ejemplo se compila correctamente. La salida representa el valor medio de cada columna. Para calcular los valores medios de las columnas seleccionadas, podemos especificar explícitamente el nombre de la columna en la función apply().
R
# Create a data frame dataframe <- data.frame(score=c(91, 92, 87, 80, 79), marks=c(97, 90, 81, 88, 89), performance=c(80, 97, 86, 57, 88)) # Try to calculate mean of 'points' column apply(dataframe, 2, mean)
Producción:
Ejemplo:
En este ejemplo, si queremos determinar la media de una sola columna, podemos usar la función mean() en lugar de la función apply() en R.
R
# Create a data frame dataframe <- data.frame(score=c(91, 92, 87, 80, 79), marks=c(97, 90, 81, 88, 89), performance=c(80, 97, 86, 57, 88)) # Compute the mean of 'score' and 'marks' # columns of the data frame apply(dataframe[c('score', 'marks')], 2, mean)
Producción:
Ejemplo:
Supongamos que queremos calcular la media de la columna «rendimiento».
R
# Create a data frame dataframe <- data.frame(score=c(91, 92, 87, 80, 79), marks=c(97, 90, 81, 88, 89), performance=c(80, 97, 86, 57, 88)) # Compute the mean of 'performance' column mean(dataframe$performance)
Producción:
Ejemplo 2
En este ejemplo, crearemos un marco de datos y encontraremos el producto de cada columna.
R
print("GeeksforGeeks") # Create a data frame dataframe <- data.frame(A=c(5, 6, 7, 5, 6, 9),B= c(6, 4, 3, 4, 2, 6),C= c(1, 2, 3, 7, 8, 9) ) #creating a product function product = function(x, output){ # accessing elements from first column A = x[1] # accessing elements from second column B=x[2] # accessing elements from third column C= x[3] # return product return(A*B*C) } cbind(dataframe,product = apply(dataframe$B,1,product))
PRODUCCIÓN
Ahora, intentemos arreglarlo.
R
print("GeeksforGeeks") # Create a data frame dataframe <- data.frame(A=c(5, 6, 7, 5, 6, 9),B= c(6, 4, 3, 4, 2, 6),C= c(1, 2, 3, 7, 8, 9) ) #creating a product function product = function(x, output){ # accessing elements from first column A = x[1] # accessing elements from second column B=x[2] # accessing elements from third column C= x[3] # return product return(A*B*C) } cbind(dataframe,product = apply(dataframe,1,product))
PRODUCCIÓN