[R] ASCII map?
Henrik Bengtsson
henrikb at braju.com
Wed May 9 19:14:09 CEST 2001
Mark, thank you for your reply. It seems that writing your own ASCII table
is the way to do it. However, using 'letters' won't do since I need
non-letter ASCII characters too (sorry for not being clear on that). Here's
how I did it:
ASCII <- c(
"\000","\001","\002","\003","\004","\005","\006","\007", # 000-007
"\010","\011","\012","\013","\014","\015","\016","\017", # 010-017
"\020","\021","\022","\023","\024","\025","\026","\027", # 020-027
"\030","\031","\032","\033","\034","\035","\036","\037", # 030-037
"\040","\041","\042","\043","\044","\045","\046","\047", # 040-047
"\050","\051","\052","\053","\054","\055","\056","\057", # 050-057
"\060","\061","\062","\063","\064","\065","\066","\067", # 060-067
"\070","\071","\072","\073","\074","\075","\076","\077", # 070-077
"\100","\101","\102","\103","\104","\105","\106","\107", # 100-107
"\110","\111","\112","\113","\114","\115","\116","\117", # 110-117
"\120","\121","\122","\123","\124","\125","\126","\127", # 120-127
"\130","\131","\132","\133","\134","\135","\136","\137", # 130-137
"\140","\141","\142","\143","\144","\145","\146","\147", # 140-147
"\150","\151","\152","\153","\154","\155","\156","\157", # 150-157
"\160","\161","\162","\163","\164","\165","\166","\167", # 160-167
"\170","\171","\172","\173","\174","\175","\176","\177", # 170-177
"\200","\201","\202","\203","\204","\205","\206","\207", # 200-207
"\210","\211","\212","\213","\214","\215","\216","\217", # 210-217
"\220","\221","\222","\223","\224","\225","\226","\227", # 220-227
"\230","\231","\232","\233","\234","\235","\236","\237", # 230-237
"\240","\241","\242","\243","\244","\245","\246","\247", # 240-247
"\250","\251","\252","\253","\254","\255","\256","\257", # 250-257
"\260","\261","\262","\263","\264","\265","\266","\267", # 260-267
"\270","\271","\272","\273","\274","\275","\276","\277", # 270-277
"\300","\301","\302","\303","\304","\305","\306","\307", # 300-307
"\310","\311","\312","\313","\314","\315","\316","\317", # 310-317
"\320","\321","\322","\323","\324","\325","\326","\327", # 320-327
"\330","\331","\332","\333","\334","\335","\336","\337", # 330-337
"\340","\341","\342","\343","\344","\345","\346","\347", # 340-347
"\350","\351","\352","\353","\354","\355","\356","\357", # 350-357
"\360","\361","\362","\363","\364","\365","\366","\367", # 360-367
"\370","\371","\372","\373","\374","\375","\376","\377" # 370-377
);
intToChar <- function(i) {
ASCII[i %% 256 + 1];
}
charToInt <- function(ch) {
match(ch, ASCII) - ; # Which is best here? charmatch or match?
}
Example 1: All 256 ASCII characters
> ASCII
Example 2: To print ASCII 65-90 (A-Z) characters try
> cat(intToChar(charToInt("A"):charToInt("Z")))
Note that it is only ASCII 32-127 plus a few of the ASCII 0-31 that can be
printed on stdout() with the same visible result over different systems.
FYI: For *curiosity* I've tried the support for escape sequences on both a
Unix system and a Windows system. It didn't work on my Windows machine
(running Rterm on Cygwin), but on the Solaris at least the sequence for
clearing the screen works:
> ESC <- intToChar(27);
> cat("This will be cleared!", ESC, "[2J", "Hi again!", sep="")
Have nice day!
Henrik Bengtsson
h e n r i k b @ b r a j u . c o m
PS. Jon, stop read this and get back to your books. ;) DS.
> -----Original Message-----
> From: Mark Myatt [mailto:mark at myatt.demon.co.uk]
> Sent: Wednesday, May 09, 2001 3:46 AM
> To: Henrik Bengtsson
> Cc: r-help at stat.math.ethz.ch
> Subject: Re: [R] ASCII map?
>
>
> Henrik Bengtsson <henrikb at braju.com> writes:
>
> >Is there a way to convert between and integer and a character and vice
> >versa? For instance
> >
> > i <- 65;
> > ch <- intToChar(i); # "A"
> > i <- charToInt(ch); # 65
> >
>
> charToInt() can be done with charmatch():
>
> ch <- "a"
> i <- charmatch(ch, letters) + 96
> i
>
> And I guess that it will work the other way round:
>
> i <- 99
> ch <- letters[i - 96]
> ch
>
> the vector 'letters' is already defined in R but contains only lower
> case characters ... it is simple to create an ASCIITable vector and use
> that:
>
> ASCIITable <- c("A", "B", "C", "D", "E", "F", "G", "H",
> "I", "J", "K", "L", "M", "N", "O", "P",
> "Q", "R", "S", "T", "U", "V", "W", "X",
> "Y", "Z", " ", " ", " ", " ", " ", " ",
> "a", "b", "c", "d", "e", "f", "g", "h",
> "i", "j", "k", "l", "m", "n", "o", "p",
> "q", "r", "s", "t", "u", "v", "w", "x",
> "y", "z")
> i <- 65
> ch <- ASCIITable[i - 64]
> ch
> i <- charmatch(ch, ASCIITable) + 64
> i
>
> >or even better
> >
> > i <- c(65, 66);
> > ch <- intToChar(i); # c("A", "B")
> > i <- charToInt(ch); # c(65, 66)
>
> R functions handle the increase in complexity of passed objects
> automatically:
>
> i <- c(65, 66)
> ch <- ASCIITable[i - 64]
> ch
> i <- charmatch(ch, ASCIITable) + 64
> i
>
> Mind you, there might be a set of character function that I don't know
> about.
>
> I hope that helps.
>
> Mark
>
>
> --
> Mark Myatt
>
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list