para empezar: He buscado durante horas en este problema ahora - por lo que si la respuesta debería ser trivial, por favor, perdóname ...¿Cómo suprimir una fila de una hoja.de.datos sin perder los atributos
Lo que Lo que quiero hacer es eliminar una fila (n. ° 101) de un data.frame. Contiene datos de prueba y no debe aparecer en mis análisis. Mi problema es: cada vez que subconjunto desde el data.frame, los atributos (especialmente los comentarios) se pierden.
str(x)
# x has comments for each variable
x <- x[1:100,]
str(x)
# now x has lost all comments
Está bien documentado que los subconjuntos de todos los atributos caerá - hasta ahora, es perfectamente clara. El manual (por ejemplo http://stat.ethz.ch/R-manual/R-devel/library/base/html/Extract.data.frame.html) incluso sugiere una manera de preservar los atributos:
## keeping special attributes: use a class with a
## "as.data.frame" and "[" method:
as.data.frame.avector <- as.data.frame.vector
`[.avector` <- function(x,i,...) {
r <- NextMethod("[")
mostattributes(r) <- attributes(x)
r
}
d <- data.frame(i= 0:7, f= gl(2,4),
u= structure(11:18, unit = "kg", class="avector"))
str(d[2:4, -1]) # 'u' keeps its "unit"
todavía no estoy tan lejos en R entender qué es exactamente lo que ocurre aquí. Sin embargo, simplemente ejecutar estas líneas (excepto las últimas tres) no cambia el comportamiento de mi subconjunto. Usar el subconjunto de comandos() con un vector apropiado (100 veces VERDADERO + 1 FALSO) me da el mismo resultado. Y simplemente almacenar los atributos en una variable y restaurarla después del subconjunto, tampoco funciona.
# Does not work...
tmp <- attributes(x)
x <- x[1:100,]
attributes(x) <- tmp
Por supuesto, podría escribir todos los comentarios a un vector (var => Comentario), subconjunto y escribir de nuevo utilizando un bucle - pero eso no parece una solución bien fundada. Y estoy bastante seguro de que encontraré conjuntos de datos con otros atributos relevantes en futuros análisis.
Así que aquí es donde mis esfuerzos en stackoverflow, Google y el poder del cerebro se atascaron. Apreciaría mucho si alguien pudiera ayudarme con una pista. ¡Gracias!
También se podría establecer la fila NA: x [101], <- NA. Pero esta es solo otra pseudo-solución que no resuelve el problema. – BurninLeo