[R] bug in interaction order when using drop?
Petr Pikal
petr.pikal at precheza.cz
Thu Aug 10 16:32:54 CEST 2006
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 at precheza.cz
More information about the R-help
mailing list