Cómo arreglar en R: dim(X) debe tener una longitud positiva

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:

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:

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:

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

 

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *