Ooops, my first suggestion reorders factor itself but if (drop) factor(ans) else ans
instead of whole drop construction shall preserve levels order without changing order of factor Petr On 10 Aug 2006 at 16:32, Petr Pikal wrote: From: "Petr Pikal" <[EMAIL PROTECTED]> To: r-help@stat.math.ethz.ch Date sent: Thu, 10 Aug 2006 16:32:54 +0200 Priority: normal Subject: [R] bug in interaction order when using drop? > Hallo all > > > version > _ > platform i386-pc-mingw32 > arch i386 > os mingw32 > system i386, mingw32 > status beta > major 2 > minor 3.1 > year 2006 > month 05 > day 23 > svn rev 38179 > language R > version.string Version 2.3.1 beta (2006-05-23 r38179) > > > > When I use interaction(....) without drop=T parameters I will get > neatly organized factor with "protiproud" and "souproud" aligned. > > > levels(interaction(vykon, teplota, proudeni)) > [1] "3.750.protiproud" "12.750.protiproud" "3.775.protiproud" > "12.775.protiproud" "3.800.protiproud" "12.800.protiproud" > [7] "3.825.protiproud" "12.825.protiproud" "3.850.protiproud" > "12.850.protiproud" "3.750.souproud" "12.750.souproud" [13] > "3.775.souproud" "12.775.souproud" "3.800.souproud" > "12.800.souproud" "3.825.souproud" "12.825.souproud" [19] > "3.850.souproud" "12.850.souproud" > > However when I use > > > levels(interaction(vykon, teplota, proudeni, drop=T)) > [1] "3.775.protiproud" "3.800.souproud" "3.750.souproud" > "12.850.souproud" "12.825.protiproud" > > everything is out of order. I know I can reorder any factor according > to my wish but it would be good to have it ordered same way as without > using drop. > > Everything comes from unique in > > if (drop) { > f <- unique(ans[!is.na(ans)]) > ans <- match(ans, f) > lvs <- lvs[f] > } > > maybe it can be modified. > > if (drop) { > f <- unique(ans[!is.na(ans)]) > ord <- order(f) > ans <- match(ans, f) > lvs <- lvs[f[ord]] > } > > which seems to work but I am not sure if it does not makes problems > having NA in data. > > Here is my data frame. > Thank you > > Petr Pikal > > > dump("df", file=stdout()) > df <- > structure(list(proudeni = structure(as.integer(c(1, 1, 1, 1, > 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, > 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, > 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, > 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, > 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, > 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, > 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, > 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, > 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, > 1, 1, 1)), .Label = c("protiproud", "souproud"), class = "factor"), > vykon = as.integer(c(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, > 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, > 3, 3, 3, 3, 3, 3, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, > 12, 12, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, > 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, > 3, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 3, 3, > 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, > 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 12, 12, 12, > 12, 12, 12, 12, 12, 12, 12, 12, 12, 3, 3, 3, 3, 3, 3, 3, > 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, > 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 12, 12, 12, 12, 12, 12, > 12, 12, 12, 12, 12, 12)), teplota = as.integer(c(775, 775, > 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, > 775, 775, 775, 775, 800, 800, 800, 800, 800, 800, 800, 800, > 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 750, 850, > 850, 850, 850, 850, 850, 825, 825, 825, 825, 825, 825, 775, > 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, > 775, 775, 775, 775, 775, 800, 800, 800, 800, 800, 800, 800, > 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 750, > 850, 850, 850, 850, 850, 850, 825, 825, 825, 825, 825, 825, > 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, > 775, 775, 775, 775, 775, 775, 800, 800, 800, 800, 800, 800, > 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, > 750, 850, 850, 850, 850, 850, 850, 825, 825, 825, 825, 825, > 825, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, > 775, 775, 775, 775, 775, 775, 775, 800, 800, 800, 800, 800, > 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, > 800, 750, 850, 850, 850, 850, 850, 850, 825, 825, 825, 825, > 825, 825))), .Names = c("proudeni", "vykon", "teplota"), > row.names = c("1", > "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", > "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", > "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", > "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", > "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", > "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", > "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", > "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", > "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", > "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", > "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", > "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", > "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", > "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", > "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", > "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", > "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", > "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", > "192", "193", "194", "195", "196"), class = "data.frame") > Petr Pikal > [EMAIL PROTECTED] > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html and provide commented, > minimal, self-contained, reproducible code. Petr Pikal [EMAIL PROTECTED] ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.