для стартеров: я уже много часов искал эту проблему, поэтому, если ответ должен быть тривиальным, пожалуйста, простите меня...
Что я хочу сделать, это удалить строку (№ 101) из data.frame. Он содержит данные теста и не должен появляться в моих анализах. Моя проблема: всякий раз, когда я подмножаюсь из data.frame, атрибуты (особенно комментарии) теряются.
str(x)
# x has comments for each variable
x <- x[1:100,]
str(x)
# now x has lost all comments
Хорошо документировано, что подмножество отбросит все атрибуты - пока это совершенно ясно. Руководство (например, http://stat.ethz.ch/R-manual/R-devel/library/base/html/Extract.data.frame.html) даже предлагает способ сохранения атрибутов:
## 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"
Я еще не дошел до R, чтобы понять, что именно происходит здесь. Однако простое выполнение этих строк (кроме последних трех) не изменяет поведение моего подмножества. Использование подмножества команд() с соответствующим вектором (100 раз TRUE + 1 FALSE) дает мне тот же результат. И просто сохранение атрибутов переменной и восстановление ее после подмножества тоже не работает.
# Does not work...
tmp <- attributes(x)
x <- x[1:100,]
attributes(x) <- tmp
Конечно, я мог бы написать все комментарии к вектору (var = > comment), подмножество и записать их с помощью цикла, но это не кажется обоснованным решением. И я совершенно уверен, что буду сталкиваться с наборами данных с другими соответствующими атрибутами в будущих анализах.
Итак, вот мои усилия в stackoverflow, Google и мозговой силе застряли. Я был бы очень признателен, если бы кто-нибудь мог помочь мне с намеком. Спасибо!