[R] Retaining attributes of columns of a data frame when subsetting.
Rolf Turner
r@turner @end|ng |rom @uck|@nd@@c@nz
Sun Oct 20 02:19:43 CEST 2019
I am writing a function that involves a data frame "X" some columns of
which have attributes. I replace X by a data frame with a subset of the
rows of X:
X <- X[ok,]
where "ok" is a logical vector. When I do this the attributes of the
columns (which I need to retain) are lost (except for the "class" and
"levels" attributes of columns which are factors).
Is there any sexy way to retain the attributes of the columns?
So far the only approach that I can work out is to extract the
attributes prior to subsetting and put them back after subsetting.
Like unto:
SaveAt <- lapply(X,attributes)
X <- X[ok,]
lX <- lapply(names(X),function(nm,x,Sat){
attributes(x[[nm]]) <- Sat[[nm]]
x[[nm]]},x=X,Sat=SaveAt)
names(lX) <- names(X)
X <- as.data.frame(lX)
This seems to work, but is rather kludgy. Is there a better way?
Thanks for any pointers.
cheers,
Rolf Turner
--
Honorary Research Fellow
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276
More information about the R-help
mailing list