# -*- r -*-
# @@PLEAC@@_NAME
# @@SKIP@@ R
# @@PLEAC@@_WEB
# @@SKIP@@ http://www.r-project.org
# @@PLEAC@@_1.0
#-----------------------------
string <- '\n' # a "newline" character
string <- '\\n' # two characters, \ and an n
#-----------------------------
string <- "\n" # a "newline" character
string <- "\\n" # two characters, \ and an n
#-----------------------------
string <- "Jon 'Maddog' Orwant" # literal single quotes
string <- 'Jon \'Maddog\' Orwant' # literal single quotes
#-----------------------------
string <- 'Jon "Maddog" Orwant' # literal double quotes
string <- "Jon \"Maddog\" Orwant" # literal double quotes
#-----------------------------
string <- "This is a multiline string which will include a
newline character"
#-----------------------------
string <- paste(
"This is also a multiline",
" string made from",
" concatenating a string list"
,sep="")
#-----------------------------
# @@PLEAC@@_1.1
#-----------------------------
value <- substr (string, start, stop)
value <- substring(string, start, stop)
value <- substring(string, start)
#-----------------------------
# Can only replace up to the same size string
substring(string, start, stop) <- newstring
#-----------------------------
string <- "This is what you have"
first <- substr (string,1,1) # "T"
first <- substring(string,1,1) # "T"
start <- substr (string,6,7) # "is"
start <- substring(string,6,7) # "is"
rest <- substring(string, 14) # "you have"
#-----------------------------
# Negative indexing not explicitly supported
last <- substring(string,nchar(string)) # "e"
end <- substring(string,nchar(string)-3) # "have"
piece <- substr (string,nchar(string)-7,nchar(string)-5) # "you"
piece <- substring(string,nchar(string)-7,nchar(string)-5) # "you"
#-----------------------------
string <- "This is what you have"
string
string <- 'Jon \'Maddog\' Orwant\n' # literal single quotes
string # "Jon 'Maddog' Orwant\n"
cat(string) # Jon 'Maddog' Orwant
#-----------------------------
substr(string,6,7) <- "be"
# This be what you have
string <- paste(substr(string,1,5),"wasn't",substring(string,8),sep="")
string <- paste(substr(string,1,nchar(string)-12),"ondrous",sep="") # replace last 12 characters
#This wasn't wondrous
string <- substr(string,2,nchar(string)) # delete first character
#his wasn't wondrous
string <- substr(string,1,nchar(string)-10) # delete last 10 characters
#his wasn'
#-----------------------------
# You can test substrings
if ( any(grep("pattern",substring(string,10))) )
cat("Pattern matches in last 10 characters\n")
if ( any(regexpr("pattern",substring(string,10))>0) )
cat("Pattern matches in last 10 characters\n")
# substitute "at" for "is", restricted to first five characters
substr(string, 1, 5) <- gsub("is","at",string)
#-----------------------------
# @@PLEAC@@_1.2
#-----------------------------
a <- if ( exists("b") ) b else c
#-----------------------------
dir <- if ( exists(commandArgs()[2]) ) commandArgs()[2] else "/tmp"
#-----------------------------
user <- Sys.getenv("USER")
user <- Sys.getenv("LOGNAME")
user <- Sys.info()[7]
user <- Sys.info()["user"]
user <- Sys.info()[6]
user <- Sys.info()["login"]
# @@PLEAC@@_1.3
#-----------------------------
# No built in way to swap without a temporary variable
#-----------------------------
temp <- a ; a <- b ; b <- temp
#-----------------------------
# @@PLEAC@@_1.4
#-----------------------------
num <- as.integer(charToRaw(char))
char <- rawToChar(as.raw(num))
#-----------------------------
char <- sprintf("%s", rawToChar(as.raw(num)))
sprintf("Number %d is character %s", num, rawToChar(as.raw(num)))
# Number 101 is character e
#-----------------------------
ascii <- as.integer(charToRaw(string))
string <- rawToChar(as.raw(ascii))
#-----------------------------
ascii_value <- as.integer(charToRaw("e")) # now 101
character <- rawToChar(as.raw(101)) # now "e"
#-----------------------------
sprintf("Number %d is character %s", as.integer(101), rawToChar(as.raw
(101)))
sprintf("Number %g is character %s", 101, rawToChar(as.raw
(101)))
#-----------------------------
ascii_character_numbers <- as.integer(charToRaw("sample"))
# 115 97 109 112 108 101
word <- rawToChar(as.raw(ascii_character_numbers))
word <- rawToChar(as.raw(c(115, 97, 109, 112, 108, 101))) # same
cat(word,"\n")
# sample
#-----------------------------
hal <- "HAL"
ascii <- as.integer(charToRaw(hal))
ascii <- ascii+1 # add one to each ASCII value
ibm <- rawToChar(as.raw(ascii))
cat(ibm,"\n") # prints "IBM"
#-----------------------------