[Rd] levels for list and data.frame
Gregor Gorjanc
gregor.gorjanc at bfro.uni-lj.si
Mon Mar 20 16:53:11 CET 2006
Hello!
Does R core find the following pacth usefull - I created methods for
levels for list and data.frame, which can be usefull to get a list of
levels for entries in a list or columns in a data.frame. Patch is
attached and shown bellow example
# Example
> tmp <- list()
> tmp$a <- factor(letters[1:10])
> tmp$b <- factor(letters[5:14])
> tmp$c <- 1:10
> tmp1 <- as.data.frame(tmp)
> tmp2 <- list()
> tmp2$"1" <- tmp
> tmp2$"2" <- tmp1
> str(tmp2)
List of 2
$ 1:List of 3
..$ a: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
..$ b: Factor w/ 10 levels "e","f","g","h",..: 1 2 3 4 5 6 7 8 9 10
..$ c: int [1:10] 1 2 3 4 5 6 7 8 9 10
$ 2:`data.frame': 10 obs. of 3 variables:
..$ a: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
..$ b: Factor w/ 10 levels "e","f","g","h",..: 1 2 3 4 5 6 7 8 9 10
..$ c: int [1:10] 1 2 3 4 5 6 7 8 9 10
> levels(tmp2)
$"1"
$"1"$a
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
$"1"$b
[1] "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
$"2"
$"2"$a
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
$"2"$b
[1] "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
> levels(tmp2, drop = FALSE)
$"1"
$"1"$a
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
$"1"$b
[1] "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
$"1"$c
NULL
$"2"
$"2"$a
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
$"2"$b
[1] "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
$"2"$c
NULL
----------------------------------------------------------------------
$ svn diff factor.R
Index: factor.R
===================================================================
--- factor.R (revision 37559)
+++ factor.R (working copy)
@@ -25,7 +25,25 @@
## Help old S users:
category <- function(...) .Defunct()
-levels <- function(x) attr(x, "levels")
+levels <- function(x, ...) UseMethod("levels")
+
+levels.default <- function(x, ...) attr(x, "levels")
+
+levels.list <- function(x, drop = TRUE)
+{
+ tmp <- lapply(x, levels, drop = drop)
+ if (drop) {
+ tmp1 <- unlist(lapply(tmp, is.null))
+ tmp <- tmp[!tmp1]
+ }
+ return(tmp)
+}
+
+levels.data.frame <- function(x, ...)
+{
+ return(levels.list(x, ...))
+}
+
nlevels <- function(x) length(levels(x))
"levels<-" <- function(x, value) UseMethod("levels<-")
--
Lep pozdrav / With regards,
Gregor Gorjanc
----------------------------------------------------------------------
University of Ljubljana PhD student
Biotechnical Faculty
Zootechnical Department URI: http://www.bfro.uni-lj.si/MR/ggorjan
Groblje 3 mail: gregor.gorjanc <at> bfro.uni-lj.si
SI-1230 Domzale tel: +386 (0)1 72 17 861
Slovenia, Europe fax: +386 (0)1 72 17 888
----------------------------------------------------------------------
"One must learn by doing the thing; for though you think you know it,
you have no certainty until you try." Sophocles ~ 450 B.C.
----------------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: factor.R.diff.gz
Type: application/x-gzip
Size: 361 bytes
Desc: not available
Url : https://stat.ethz.ch/pipermail/r-devel/attachments/20060320/522fdf5f/attachment.gz
More information about the R-devel
mailing list