Tengo un marco de datos y quiero aprender cómo el resumen genera su información. Específicamente, cómo el resumen genera un conteo para la cantidad de elementos en cada nivel de un factor. Puedo usar un resumen, pero quiero aprender a trabajar mejor con los factores. Cuando intento? Resumen, acabo de obtener la información general. ¿Es esto imposible porque está en bytecode?¿Cómo puedo leer el código para summary() para un marco de datos?
Respuesta
lo que vemos cuando se escribe summary
es
> summary
function (object, ...)
UseMethod("summary")
<bytecode: 0x0456f73c>
<environment: namespace:base>
Esto nos está diciendo que el resumen es una función genérica y tiene muchos métodos que se le atribuye. Para ver lo que esos métodos se llama en realidad podemos tratar
> methods(summary)
[1] summary.aov summary.aovlist summary.aspell*
[4] summary.connection summary.data.frame summary.Date
[7] summary.default summary.ecdf* summary.factor
[10] summary.glm summary.infl summary.lm
[13] summary.loess* summary.manova summary.matrix
[16] summary.mlm summary.nls* summary.packageStatus*
[19] summary.PDF_Dictionary* summary.PDF_Stream* summary.POSIXct
[22] summary.POSIXlt summary.ppr* summary.prcomp*
[25] summary.princomp* summary.srcfile summary.srcref
[28] summary.stepfun summary.stl* summary.table
[31] summary.tukeysmooth*
Non-visible functions are asterisked
Aquí vemos todos los métodos asociados con la función summary
. Lo que esto significa es que hay un código diferente para cuando llama al resumen en un objeto lm que cuando llama al resumen en un data.frame. Esto es bueno porque no esperaríamos que el resumen se realice de la misma manera para esos dos objetos.
para ver el código que se ejecuta cuando se llama resumen en un hoja.de.datos que puede escribir sólo
summary.data.frame
como se muestra en la lista de métodos. Podrá examinarlo, estudiarlo y hacer lo que quiera con el código impreso. Mencionó que estaba interesado en factores, por lo que probablemente desee examinar el resultado de summary.factor
. Ahora puede observar que algunos de los métodos impresos tenían un asterisco (*) junto a ellos, lo que implica que no son visibles. Esto esencialmente significa que no puede simplemente escribir el nombre de la función para tratar de ver el código.
> summary.prcomp
Error: object 'summary.prcomp' not found
Sin embargo, si usted está decidido a ver lo que en realidad es el código que puede utilizar la función getAnywhere
para visualizarla.
> getAnywhere(summary.prcomp)
A single object matching ‘summary.prcomp’ was found
It was found in the following places
registered S3 method for summary from namespace stats
namespace:stats
with value
function (object, ...)
{
vars <- object$sdev^2
vars <- vars/sum(vars)
importance <- rbind(`Standard deviation` = object$sdev, `Proportion of Variance` = round(vars,
5), `Cumulative Proportion` = round(cumsum(vars), 5))
colnames(importance) <- colnames(object$rotation)
object$importance <- importance
class(object) <- "summary.prcomp"
object
}
<bytecode: 0x03e15d54>
<environment: namespace:stats>
Esperamos que esto le ayude a explorar el código en R mucho más fácilmente en el futuro.
Para obtener más información, puede ver Volume 6/4 of The R Journal (warning, pdf) y leer la sección "R Help Desk" de Uwe Ligge, que trata de ver el código fuente de las funciones R.
Bien explicado. 'methods (class = data.frame)' también se pueden mencionar. – Roland
- 1. ¿Cómo puedo analizar datos CSV de un vector de caracteres para extraer un marco de datos?
- 2. ¿Cómo puedo especificar contratos de código para el código de marco existente (BCL)?
- 3. ¿Biblioteca Java de código abierto para leer datos de ECG?
- 4. Consejos para leer el código ASM?
- 5. Buscando un buen código Lisp para leer
- 6. Marco para estructurar código JS existente
- 7. ¿Cómo puedo leer datos XMP de un JPG con PHP?
- 8. ¿Dónde encontrar bello código PHP para leer?
- 9. ¿Cómo escribir/leer un marco de datos de pandas con MultiIndex desde/hacia un archivo ASCII?
- 10. ¿Cómo puedo leer un conjunto de datos SAS?
- 11. ¿Existe un marco de código abierto para lienzos 3D?
- 12. Directrices para escribir un marco
- 13. Biblioteca de C++ para leer el código de matriz de datos
- 14. ¿Cómo agrego un salto de línea para leer el comando?
- 15. ¿cómo puedo leer datos binarios en C++?
- 16. método genérico para leer datos de DataReader
- 17. Para cada fila en un marco de datos R
- 18. ¿Cómo dividir un marco de datos?
- 19. ¿Cómo sueles tomar notas para leer el código fuente de un gran software?
- 20. ¿Puedo incluir un marco en otro marco?
- 21. WinDbg Address Summary
- 22. Cómo omitir las filas no válidas al leer el marco de datos del archivo en R?
- 23. Filtrar un marco de datos
- 24. Cómo obtener el marco para NSStatusItem
- 25. ¿Cómo uso el prefijo LOCK ASM para leer un valor?
- 26. ASP.NET Validation Summary: ¿Cómo deshabilitar el validador con JavaScript?
- 27. ¿Cómo leer datos de Hbase?
- 28. ¿Cómo integrar el marco XMPP para iPhone?
- 29. Jersey para leer los datos del formulario
- 30. ¿Cómo puedo usar Bochs para ejecutar el código de ensamblado?
intente '> summary.data.frame' en la consola. – kohske
Vea '? Methods' e intente' methods (summary) ', que debería llevarlo a' summary.data.frame', que está documentado en '? Summary'. –
Esta sesión de preguntas y respuestas es aún más definitiva: http://stackoverflow.com/questions/19226816/how-can-i-view-the-source-code-for-a-function –