graficas - cbind reemplaza a String con number?
rbind data frame r (2)
Para los vectors
se combinan con cbind
, el resultado sería una matrix
, que solo puede contener un tipo de datos. Por lo tanto, el factor "Especie" se ve forzado a su valor numérico subyacente.
Pruebe cbind.data.frame
en cbind.data.frame
lugar (o simplemente data.frame
) si necesita que sus columnas tengan diferentes tipos de datos.
> head(data.frame(x, y))
x y
1 3.5 setosa
2 3.0 setosa
3 3.2 setosa
4 3.1 setosa
5 3.6 setosa
6 3.9 setosa
> head(cbind.data.frame(x, y))
x y
1 3.5 setosa
2 3.0 setosa
3 3.2 setosa
4 3.1 setosa
5 3.6 setosa
6 3.9 setosa
x = iris$Sepal.Width;
y = iris$Species;
m = cbind(x,y);
la salida de m es:
x y
[1,] 3.5 1
[2,] 3.0 1
[3,] 3.2 1
[4,] 3.1 1
[5,] 3.6 1
[6,] 3.9 1
pero quiero ''setosa'', etc. en la columna y en lugar de un número
¿Cómo puedo hacer eso?
Quiero combinar los 2 vectores porque quiero filtrar luego con
m[m[,"y"]=="virginica",]
¿o hay otra oportunidad de hacerlo sin cbind?
cbind()
devuelve una matrix
que debe ser de una sola clase. En este caso, todo se convierte en character
porque esa es la clase más general (puede expresar números como personajes, pero no al revés). R confía en data.frame
para almacenar columnas de diferentes clases.
Para hacer lo que quiera, puede crear explícitamente un nuevo data.frame
o usar un subconjunto del actual:
iris2 <- data.frame(x=iris$Sepal.Width, y=iris$Species) ## creates new data.frame
iris[, c("Sepal.Width", "Species") ## returns subset of iris
Si publica el problema que intenta resolver, puede haber una forma más simplificada para hacer el filtrado que desea.