¿Es posible truncar la salida al ver el contenido de Dataframes?
-
28-10-2019 - |
Pregunta
Tengo un marco de datos con algunas columnas de "comentarios" muy largas. Cuando me muestran, están divididos en diferentes bloques, lo que dificulta la lectura de las filas. ¿Es posible cambiar una configuración en R o modificar la llamada a Data.Frame para truncar las cadenas a cierta longitud?
Ejemplo: un marco de datos de 3 columnas
data.frame(cbind(rep(1,5),rep(c("very very long obnoxious character string here" ,"dog","cat","dog",5)),rep(c("very very long obnoxious character string here" ,"dog","cat","dog",5))))
DataFrame resultante como se ve en mi pantalla:
X1 X2
1 1 very very long obnoxious character string here
2 1 dog
3 1 cat
4 1 dog
5 1 5
X3
1 very very long obnoxious character string here
2 dog
3 cat
4 dog
5 5
Solución
Recomiendo una especie de forma explícita como esta:
f <- function(x) data.frame(lapply(x, substr, 1, 5))
uso:
> f(d)
X1 X2 X3
1 1 very very
2 1 dog dog
3 1 cat cat
4 1 dog dog
5 1 5 5
Aunque es posible cambiar el comportamiento predeterminado, no recomiendo:
body(format.data.frame)[[5]] <- quote(for (i in 1L:nc) rval[[i]] <- substr(format(x[[i]], ..., justify = justify), 1, 5))
unlockBinding("format.data.frame", baseenv())
assign("format.data.frame", format.data.frame, pos = baseenv())
lockBinding("format.data.frame", baseenv())
rm(format.data.frame)
uso:
> d
X1 X2 X3
1 1 very very
2 1 dog dog
3 1 cat cat
4 1 dog dog
5 1 5 5
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow