Re: [R] bug in interaction order when using drop?

From: Petr Pikal <petr.pikal_at_precheza.cz>
Date: Fri 11 Aug 2006 - 01:12:34 EST


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" <petr.pikal@precheza.cz>
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
> petr.pikal@precheza.cz
>
> ______________________________________________
> 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
petr.pikal@precheza.cz



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. Received on Fri Aug 11 01:21:11 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Fri 11 Aug 2006 - 22:18:00 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.